2012-12-15 26 views
2

我的視圖控制器是UIViewController。我已將UITableView添加到UIView。當tableview行被選中時,push segue觸發一個新的視圖控制器。但是,從新視圖控制器返回時,所選行保持選中狀態。當我的第一個控制器是UITableviewController時,我沒有這個問題,但我不得不將其更改爲UIViewController,因爲我想將活動指示器添加到我的視圖中。 我注意到的另一件事是,當我的第一個控制器是UITableviewController,viewDidLoad從新的視圖控制器回來(但現在它被稱爲)沒有被調用。從推推回來後,Tableview行保持選定狀態

回答

9

添加...

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

tableView:didSelectRowAtIndexPath:

+0

什麼,如果用戶希望在排blueSelection選擇 – Rajneesh071

+0

謝謝。我沒有使用'tableView:didSelectRowAtIndexPath:'所以我添加了'[self.tableView deselectRowAtIndexPath:indexPath animated:YES];'改爲'shouldPerformSegueWithIdentifier'方法。但是,與我的第一個控制器是UITableViewController的初始解決方案相比,這種行爲的原因是什麼? – Shiim

+0

可能在這種情況下,您使用此方法在InterfaceBuilder – Atif

4

試試這個:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

這將幫助你......

+0

如果用戶想要在行選擇上使用blueSelection,該怎麼辦? – Rajneesh071

+0

謝謝,這個解決方案也適用(當添加到'cellForRowAtIndexPath'時),但我選擇了Atif的答案,因爲他是第一個應答。 – Shiim

2

您可以添加

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

tableView:didSelectRowAtIndexPath:代表。

或者你也可以做

-(void)viewWillAppear:(BOOL)animated 
{ 
    [table reloadData]; 
} 
+1

謝謝 - 這個解決方案也可以。如果我可以選擇更多答案作爲解決方案... – Shiim

+0

歡迎您... @ Shiim .. – Rajneesh071

3

這種機制,建議答案的變化,消除了選擇時的細節視圖中消失,而且還可以幫助用戶知道他們選擇去詳細信息視圖:

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

    [self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES]; 
} 

這似乎是Apple在自己的應用程序中所做的。查看在聯繫人應用中選擇聯繫人記錄時的行爲舉例。

+0

看起來更好。謝謝! – celiker

1

雨燕3.0:

tableView.deselectRow(at: indexPath, animated: true)