我有一個UINavigationController
已在其加載的UITableview
。這裏面UITableView
我有一個prototype
細胞和我永遠不會改變,並永遠不會靜態數據重用了幾次。所以,我把viewControlller
它自己的兩個push segues連接到兩個他們的destination
視圖控制器。這似乎工作得很好。爲了調用這些segues
,我使用了UItableViews
委託方法:didSelectRowAtIndexPath
所以我知道哪個行被點擊了,然後轉到正確的viewController
。prepareForSegue叫了兩聲
沒有,問題,它的工作原理。
然後我增加了第三viewController
和與之配套的,segue
匹配,相同didSelectRowAtIndexPath
前兩個和相同的設置 - 現在,當我點擊第二個單元格,這是工作,didSelectRowAtIndexPath
不出所料調用,那麼它稱爲正確的繼續,然後調用prepareForSegue
。然後,prepareForSegue
再次被調用(在這一點上,didSelectRowAtIndexPath
尚未再次調用)的prepareForSegue
方法然後調用不正確SEGUE(第三賽格瑞我添加)。
我想不出是誰喊第二次的prepareForSegue
方法和爲什麼它得到了錯誤的標識。
有什麼我做錯了嗎?
一些代碼樣本
這裏是didSelectRowAtIndexPath
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row)
{
case CategoryFilter:
{
[self performSegueWithIdentifier:@"FilteredCategoryView" sender:self];
break;
}
case PriceFilter:
{
[self performSegueWithIdentifier:@"FilterByPriceSegue" sender:self];
}
case ConditionFilter:
{
[self performSegueWithIdentifier:@"SearchFilterConditionSegue" sender:self];
}
}
}
然後在prepareForSegue
方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"FilteredCategoryView"]){
//No data to pass just yet
}
if ([segue.identifier isEqualToString:@"FilterByPriceSegue"]){
//No data to pass just yet
}
if ([segue.identifier isEqualToString:@"SearchFilterConditionSegue"]){
//No data to pass just yet
}
}
在上面的方法 - 我不傳送數據,只是還沒有,但我會。它的這個方法被調用兩次。
代碼請..... – Balu
新增的調用代碼的唯一位menially塞格斯。不確定你在找什麼其他代碼?謝謝您的幫助。 – Tander
如果存在差異,請檢查賽段上的屬性。所有三個segues連接到他們自己的單元格,還是連接到view/tableview的任何segues?聽起來像一個賽格是自動觸發的。也許視圖引發了不是手動的賽段? – Moonwalkr