Theo tôi TextViewTableViewCell
, tôi có một biến để theo dõi một khối và một phương thức cấu hình trong đó khối được truyền vào và được chỉ định.
Đây là TextViewTableViewCell
lớp học của tôi :
//
// TextViewTableViewCell.swift
//
import UIKit
class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet var textView : UITextView
var onTextViewEditClosure : ((text : String) -> Void)?
func configure(#text: String?, onTextEdit : ((text : String) -> Void)) {
onTextViewEditClosure = onTextEdit
textView.delegate = self
textView.text = text
}
// #pragma mark - Text View Delegate
func textViewDidEndEditing(textView: UITextView!) {
if onTextViewEditClosure {
onTextViewEditClosure!(text: textView.text)
}
}
}
Khi tôi sử dụng phương thức configure trong phương thức của mình cellForRowAtIndexPath
, làm thế nào để tôi sử dụng đúng bản thân yếu trong khối mà tôi truyền vào.
Đây là những gì tôi có mà không có bản thân yếu:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {(text: String) in
// THIS SELF NEEDS TO BE WEAK
self.body = text
})
cell = bodyCell
CẬP NHẬT : Tôi có những điều sau đây để làm việc bằng cách sử dụng [weak self]
:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {[weak self] (text: String) in
if let strongSelf = self {
strongSelf.body = text
}
})
cell = myCell
Khi tôi làm [unowned self]
thay vì [weak self]
và đưa ra if
tuyên bố, ứng dụng gặp sự cố. Bất kỳ ý tưởng về cách này nên làm việc với [unowned self]
?