场景
我封装了一个占位图:
/// 在指定view上展示占位图,默认覆盖整个view,如需调整约束可以对返回值进行修改
/// - Parameter view: 展示占位图的view
/// - Parameter type: 占位图类型
/// - Parameter title: title
/// - Parameter tapedColsure: 占位图点击回调
class func show(on view: UIView, type: PlaceholderViewType!, title: String!, tapedColsure: ViewTapedClosure) -> PlaceholderView {
// 先移除已有的
remove(from: view)
let placeholderView = PlaceholderView(type: type, title: title, tapedColsure: tapedColsure)
view.addSubview(placeholderView)
placeholderView.snp.makeConstraints { (make) in
make.top.left.width.height.equalToSuperview()
}
return placeholderView
}
占位图默认覆盖整个view,但有些情况下要求不覆盖整个view,因此我给这个show方法提供了一个返回值,需要的时候可以任意调整,如:
let placeholderView = PlaceholderView.show(on: self.view, type: .loadFailed, title: "网络不给力") {
self.loadData()
}
placeholderView.snp.remakeConstraints { (make) in
make.left.right.equalToSuperview()
make.top.bottom.equalTo(self.raffleListView)
}
但是大部分时候都是不需要的,不需要对占位图进行任何调整,如:
PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
print("点击占位图")
}
这个时候 Xcode 就会给个⚠️:
Result of call to 'show(on:type:title:tapedColsure:)' is unused
一种方式是使用 let _
忽略返回值:
let _ = PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
print("点击占位图")
}
但是更优雅的方式是直接在定义函数的地方加上 @discardableResult
忽略返回值:
@discardableResult
class func show(on view: UIView, type: PlaceholderViewType!, title: String!, tapedColsure: ViewTapedClosure) -> PlaceholderView {
// ...
}
这样在调用函数的时候即使不加上 let _
也不会出现⚠️了:
PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
print("点击占位图")
}
网友评论