我使用自定义单元格创建了一个tableview。
在我的UITableViewCell文件中,我有以下代码:
var myTipView:EasyTipView?
@IBAction func infoBtn_pressed(_ sender: UIButton) {
//print(diseases)
if self.myTipView == nil
{
self.myTipView = EasyTipView(text: diseases, preferences: EasyTipView.globalPreferences)
self.myTipView!.show(forView: sender)
}
else
{
self.myTipView!.dismiss()
self.myTipView = nil
}
}
在我的UIViewController里面我有一个带有代码的tableview:
var myTipView:EasyTipView?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = myTable.dequeueReusableCell(withIdentifier: "diffCell") as! diffCell
cell.myTipView = self.myTipView
}
当我尝试使用self.myTipView的值时,我发现它为零,这是显而易见的,因为它在InfoBtn_pressed被激活之前没有任何值,在这种情况下,当表首次创建时,cell.myTipView总是为nil
如何在按下按钮后让self.myTipView获取值,以便在UIViewController中使用它
答案 0 :(得分:2)
设置myTipView
值后,您需要刷新表格: -
tableView.reloadData()
答案 1 :(得分:1)
您可以尝试在myTipView参数中添加一个观察者:
var myTipView : EasyTipView? {
didSet {
// Test that myTipView is non-nil
if let _ = myTipView {
// implement a function here that updates the cells in the table view...
}
}
}
我假设您可以处理更新表格单元格(顺便提一下,您的实现似乎表明每个单元格都具有相同的EasyTipView属性:这是您的意图吗?)。希望有所帮助。
答案 2 :(得分:0)
最后,当在表格单元格中单击按钮并且工作得很好时,我使用委托来通知表格(^^)