2016-02-09 47 views
2

有什麼辦法可以在UITableViewCell上執行像ViewWillAppear這樣的事情嗎?ViewWill在UITableViewCell上出現?

UITableViewDelegate方法(如willDisplayCell)僅在滾動顯示單元格時起作用。

在我的情況下,我需要在用戶移動到另一個選項卡並返回到UITableView的情況下檢測單元格外觀。

我能夠使用indexPathsForVisibleRows方法解決我的問題,但這似乎不是一個聰明的方法。

+0

你有什麼要執行時,用戶來自另一個選項卡回來? – iOSEnthusiatic

回答

4

是的。您必須在m文件中使用awakeFromNib meyhod。這個方法總是先調用。

-(void)awakeFromNib{ 

} 

如果可見單元格不加載,那麼你必須重新加載你的tableview。

tableView.reloadData() 

希望它可以幫助你。

+0

謝謝你的回答,但在用戶移動到另一個Tab並回到UITableView的情況下,awakeFronNib不會被調用。 – Bigair

+2

@Bigair awakeFromNib只有在UIViewController的第一個單元格加載時纔會調用 – Vvk

+0

@Bigair一個anothyer加載previus tableview單元格的方法是當它點擊另一個** tab時重新加載您的tableview ** – Vvk

2

我不確定這是否適用於您,因爲您希望在選項卡更改上執行某些操作,否則會起作用。

我知道我回答太晚了,但我正在幫助其他人查看此帖。

所以,你可以試試這個: (目標c)

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell 
             forRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Do what ever you want 
} 

(SWIFT)

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    // Do what ever you want 
} 
+0

我試圖使用這種方法(swift),但我得到一個錯誤,以消除「覆蓋」 - 「方法不覆蓋任何方法從它的超級類別「。當我刪除「覆蓋」應用程序編譯但該方法未被調用,雖然其他委託方法被調用(如「didSelectRowAtIndexPath」) – Zvi

+0

@ Zvi,謝謝。更新了我的答案。你可以試試下面的方法,而不是willDisplayCell,讓我知道你的結果:函數的tableView(_的tableView:UITableView的,willDisplay細胞:UITableViewCell中,forRowAt indexPath:IndexPath) – Hardik

+0

首先需要使用indexPath:NSIndexPath(甚至在蘋果文檔的錯誤)。其次,我不知道我做了什麼,但現在它工作,使用willDisplayCell - willDisplay仍然無法正常工作 – Zvi

相關問題