からのUIViewControllerのFUNCを呼び出すと、私の問題です。 MainTableViewControllerには、BlackViewというUIView用のコンセントもあります。スウィフトはここでカスタムUITableViewCellの
私がしたいこと:myCustomCellの中で "BlackView.hidden = false"を設定したいと思います。私のMainTableViewControllerファイルで "class func"を使ってmyCustomCellから呼び出そうとしていますが、 "func"の前に "class"を置くとXcodeがBlackViewを認識しなくなるため動作しません。
したがって、MainTableViewControllerの関数を呼び出すか、自分の.xibファイルの.swiftからコンセントにアクセスしたいと思います。
誰かがそれを行う方法を知っていますか?
ここに私の.xibファイルされる:
ここでは私の.xibファイルの.swiftである:ここで
class myCustomCell: UITableViewCell {
@IBOutlet weak var commentTextView: UITextView!
override func awakeFromNib() {
commentTextView.delegate = self
super.awakeFromNib()
}
func textViewDidBeginEditing(textView: UITextView) {
MainTableViewController.hideBlackView(true)
}
func textViewDidEndEditing(textView: UITextView) {
var comment = commentTextView.text
}
}
は私MainTableViewControllerです:
class MainTableViewController: UIViewController
@IBOutlet weak var MyTable: UITableView!
@IBOutlet weak var BlackView: UIView!
override func viewDidLoad() {
BlackView.hidden = true;
MyTable.registerNib(UINib(nibName: "myCustomCell", bundle: nil), forCellReuseIdentifier: "myCustomCellID")
}
class func hideBlackView(setToHidden: Bool) {
if setToHidden == true {
BlackView.hidden = true
} else {
BlackView.hidden = false
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myCustomCellID") as! PublishHeaderTableViewCell
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
}
ここに私のメインのストーリーボードがあります:
ありがとうございました!それは今、動作します!私はちょうどあなたのコードで次の変更を加えなければなりません:1:弱いvarの代理人から "弱い"を削除:MyCustomCellDelegate? 2: "class func hideBlackView(setToHidden:Bool)"から "class"を削除します。 –
「クラス」を削除する必要性が気に入っています。それはコピー貼りの誤字です。上記のコードはいずれもXCodeで書かれていませんでした。したがって、他のエラーがある可能性があります。私はバグを削除するコードを更新しました。弱い委任先:MyCustomDelgate?から弱点を削除する必要はありません。実際には、 "弱い"ことをしないことは悪い習慣です。それはそれを所有するオブジェクトへの強い参照を保持するからです。これにより、iosのシーンの背後にあるメモリ管理を扱う自動参照カウントが機能しなくなります。 –
あなたのケースでは、UITableViewによって保持されているものへの参照が破棄されたとき(テーブルが有効範囲外になったとき)にセルが破棄されることを付け加えておきます。 UIViewControllerインスタンスがスコープ外に出る前に、これはほぼ確実に起こります。この場合、恐れがある「保持サイクル」は発生しません。上記のコードでクラスプロトコルとして宣言するのを忘れてしまったので、弱くすることはできませんでした。 –