위젯 방식을 사용하여 버튼을 누르면 UITableViewCell에서 ViewController로 탭 동작을 구현하려고합니다.버튼 액션 UITableViewCell에서 ViewController로
protocol UserCellDelegate : class {
func disableUser(cell: UserCell, button: UIButton)
}
class UserCell : UITableViewCell {
@IBOutlet weak var userLabel: UILabel!
@IBOutlet weak var userDescription: UILabel!
@IBOutlet weak var writeOutUser: UIButton!
weak var delegate: UserCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
writeOutUser.layer.cornerRadius = 5.0
}
@IBAction func disableUserButtonAction(sender: UIButton) {
delegate?.disableUser(self, button: writeOutUser) //self here I believe to be the cell
}
}
의 ViewController :
class UserDetailTableViewController : UIViewController, UserCellDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let userCell = UserCell()
userCell.delegate = self
}
func disableUser(cell: UserCell, button: UIButton) {
print("VC: User Disabled")
}
}
이며, 내의 ViewController에서 disableUser 함수가 절대 호출되지됩니다 여기서 문제
TableViewCell을 - 다음은 내가 지금까지있는 것입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
가장 좋은 방법은 무엇입니까?
나는 동일한 것을 따르고 있지만 행운이없는 SO Approved Answer Here을 언급했다. 도움이 될 것입니다. 감사!!
은 대리인이 vieDidLoad에서 nil 인 것처럼 보입니다. cellForRow 메쏘드에서 delagate를 설정해야합니다. –
'UITableViewCell'의 인스턴스를 기본 이니셜 라이저'()'로 초기화 할 수 없습니다. 지정된 초기화 자'init (style : reuseIdentifier :)'를 호출해야합니다. Swift에서는 델리게이트 패턴보다는 콜백 클로저를 사용하는 것이 더 편리합니다. – vadian
@TejaNandamuri : 그게 속임수 였어!나는 그것이 tableViewCell이라는 사실을 간과했다 : - ( –