2009-12-10 56 views
1

deselectRowAtIndexPath我有文本的幾行被選擇時,其改變顏色的小區/突出顯示。問題在於,當新的viewController被推入時,取消選擇動畫發生,這在視覺上分散注意力,因爲文本突然回覆到未選定狀態。我已將deselectRowAtIndexPath語句移動到新視圖控制器所在的行後面,但這不起作用。問題與的tableView

如何防止用戶看到電池取消選擇(不執行定時器)?任何幫助,將不勝感激請。

回答

7

我想用表視圖和推新的VC所使用的一般模式是,取消選擇在viewWillAppear:animated方法錶行。然後當VC彈出時,他們會看到哪一行已被用於導航到該VC。

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [self.myTableView deselectRowAtIndexPath:[myTableView indexPathForSelectedRow] animated:YES]; 

} 

so so remove yourselectRow from your didSelectRowAtIndexPath method。

+0

謝謝,這是有道理的。但是,我的viewWillAppear方法不是解僱? – RunLoop 2009-12-10 17:55:25

+1

更新:viewWillAppear沒有發射,因爲我正在使用導航控制器,所以我實現了 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated – RunLoop 2009-12-10 18:07:34

9

如果您使用的是UITableViewController,你會不會需要調用deselectRowAtIndexPath:。當您的表格視圖再次可見時,這將自動完成。

如果您沒有使用UITableViewController,因爲您有更復雜的界面,您需要從viewWillAppear:animated:方法手動撥打deselectRowAtIndexPath:

+0

這很有趣,沒有知道這一點瑣事。 – wkw 2009-12-10 17:46:09

+0

我使用的是tableViewController,但是當推VC彈出 – RunLoop 2009-12-10 17:58:36

+0

你的子類的UITableViewController該行不會自動取消?如果是這樣,你打電話給'[super viewWillAppear]'?如果您閱讀UITAbleViewController的Overview部分,我會發現它討論了UITAbleViewController基類提供的各種行爲。 – wkw 2009-12-10 21:09:07