1.懶加載
private lazy var label : UILabel = {
let label = UILabel()
label.textColor = UIColor.blackColor()
label.textAlignment = NSTextAlignment.Center
label.font = UIFont.systemFontOfSize(18)
return label
}()
2.重寫model的set方法賦值(可選類型要先判斷為不為nil诫龙,為nil強(qiáng)轉(zhuǎn)會崩)
var model : WBModel? {
didSet {
label.text = model!.title
//如果拼接的話要轉(zhuǎn)
if let string = model?.title {
label.text = "cell \(string)"
}
}
}
3.按鈕的點擊 :
無參數(shù)Selector("btnWithLogin”) 或者 #selector(LoginViewController.btnWithLogin)
有參數(shù)Selector(“btnWithLogin:”)
#selector(MyDetailHeardView.btnWithLogin(_:))
btn_sure.addTarget(self, action: Selector(“btnWithLogin:"), forControlEvents: UIControlEvents.TouchUpInside)
注意:@objc別忘了這個v暄省G┰摺7质!B嵘堋!
@objc private func btnWithLogin(btn : UIButton) -> Void {
if delegate != nil {
delegate?.myDetailHeardViewDidClick(btn.tag)
}
}
4.代理delegate
1.定義
protocol LoginInputViewDelegate : NSObjectProtocol {
func didClickWithForget()
}
class LoginInputView: UIView {
weak var delegate : LoginInputViewDelegate?
//MARK: - 點擊了忘記密碼材蛛,別忘了@objc
@objc private func btnWithForget() -> Void {
if delegate != nil {
delegate?.didClickWithForget()
}
}
private lazy var btn_forget : UIButton = {
let btn_forget = UIButton(type: UIButtonType.Custom)
btn_forget.addTarget(self, action: #selector(LoginInputView.btnWithForget), forControlEvents: UIControlEvents.TouchUpInside)
return btn_forget
}()
}
2.實現(xiàn)
extension LoginViewController : LoginInputViewDelegate {
func didClickWithForget() {
print("點擊了忘記密碼")
}
}
5.重寫frame的set方法,注意:如果頭部要出現(xiàn)空隙,y+的同時卑吭,height要-
//重寫frame
override var frame:CGRect{
didSet {
var newFrame = frame
newFrame.origin.x += 10/2
newFrame.size.width -= 10
newFrame.origin.y += 10
newFrame.size.height -= 10
super.frame = newFrame
}
}
- 移除通知
deinit
{
NSNotificationCenter.defaultCenter().removeObserver(self)
}
7.下載圖片dispatch_group_create用法
private func cachesImages(viewModels: [StatusViewModel])
{
// 0.創(chuàng)建一個組
let group = dispatch_group_create()
for viewModel in viewModels
{
// 1.從模型中取出配圖數(shù)組
guard let picurls = viewModel.thumbnail_pic else
{
// 如果當(dāng)前微博沒有配圖就跳過, 繼續(xù)下載下一個模型的
continue
}
// 2.遍歷配圖數(shù)組下載圖片
for url in picurls
{
// 將當(dāng)前的下載操作添加到組中
dispatch_group_enter(group)
// 3.3利用SDWebImage下載圖片
SDWebImageManager.sharedManager().downloadImageWithURL(url, options: SDWebImageOptions(rawValue: 0), progress: nil, completed: { (image, error, _, _, _) -> Void in
NJLog("圖片下載完成")
// 將當(dāng)前下載操作從組中移除
dispatch_group_leave(group)
})
}
}
// 監(jiān)聽下載操作
dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in
NJLog("全部下載完成")
self.statuses = viewModels
}
}