2017-09-12 8 views
0

カスタムセルでテーブルビューを作成しました。私の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内で私はコードとテーブルビューがあります。私は自分の価値を使用しようとしたとき

var myTipView:EasyTipView? 


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = myTable.dequeueReusableCell(withIdentifier: "diffCell") as! diffCell 

cell.myTipView = self.myTipView 

} 

.myTipView infoBtn_pressedがアクティブにされ、この場合cell.myTipViewが最初にテーブルが作成されたときに常にnilであるまで値がないので、これはnilであり、これは明らかです。

は、どのように私は、あなたがこれを行うことにより、テーブルを更新する必要があるボタンは、myTipView値を設定するとのUIViewController

答えて

2

内で使用するために押された後self.myTipViewが値を持って取得することができます: -

tableView.reloadData() 
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性質を有することを示唆しているようだ(あなたがテーブルのセルを更新扱うことができると仮定しています:あるyのこと私たちの意図?)。希望が役立ちます。

0

最後に、テーブルのセルでボタンをクリックして作業したときに、代理人がテーブルに通知してくれました(^^)

関連する問題