2016-08-30 6 views
0

カスタムTableViewCellのボタンを押した後、他のカスタムTableViewCellの画像を非表示/非表示にしたいと思います。私の細胞はセクションで並べられます。表示中のUITableViewリロードセクション

ボタンを押して別のビューに切り替えてから、TableViewに戻ると、変更が有効になります。ビューを切り替える必要なく、すぐに表示されるようにしたいと思います。

マイコード:

 let otherCellIndexPath = IndexPath(item: 0, section: 0) 
     let otherCell = tableView.cellForRow(at: oldIndexPath) as! CustomTableViewCell 
     otherCell.hideImage() 

     let currentCell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell 
     currentCell.showImage() 

     tableView.beginUpdates() 
     tableView.reloadSections([otherCellIndexPath,indexPath], with: .none) 
     tableView.endUpdates() 

私は何をしないのですか? (Xcode 8 b6、Swift 3を使用)

+0

あなたは 'tableview.reloadData()'を試しましたか? – John

+1

テーブルビューを非表示にして再読み込みしたい配列からオブジェクトを削除するだけです。 –

答えて

1

自分のコードでcellForRowを呼び出すことは避けてください。代わりに、私は各セルの状態の辞書を維持する。

var dictSection0 = [["ImageName" : "SampleImageSection0Row0","hidden":true],["ImageName" : "SampleImageSection0Row1","hidden":false]] 

var dictSection1 = [["ImageName" : "SampleImageSection1Row0","hidden":true],["ImageName" : "SampleImageSection1Row1","hidden":false]] 
var tableDataModel = [dictSection0,dictSection1] 

ボタンタップで辞書を変更する。上記の場合のセクションの行1 0

var rowDict = tableDataModel[0][1] 
rowDict["hidden"] = true 

trueに隠され、その後、変更を反映するために(あなたがやっているように、またはその一部)表全体を再ロード設定することができます。

cellForRow atIndexPathメソッド内のこの辞書は、セル内のイメージの表示/非表示に使用されます。 @Manaliが何をすべき示唆何

var rowData = tableDataModel[indexPath.section][indexPath.row] 
let tableCell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) 
tableCell.imageView.hidden = rowDict["hidden"] 
1

、tableView.reloadSectionsを呼び出すと、そのメソッドの内部で、デキューセルは、あなたがcellForRowを呼び出すことによって取得1、右と全く同じ物ではないかもしれない、cellForRowAtIndexPath上のシリーズの呼び出しをトリガーあなたは `tableview.reloadData()`を試しましたか?cellForRowAtIndexPath

関連する問題