必須有一個簡單的解決這個,但4小時瀏覽StackExchange後,我放棄了,並試圖讓這個回答在這裏:Segue公司解僱,但不推/的UITabBarController /時的UITableViewController單擊單元格
情況: iOS 5中,Xcode的4.2.1,使用故事板
設置:
- 根導航控制器=的UITabBarController用5項
- 每個標籤鏈接到U形我有類爲每個視圖控制器和導航控制器(UITabBarController)
- 我點擊一個選項卡,說「程序」,它顯示我的項目列表(在鏈接的UITableViewController),說這些項目之一是「會話」
- 我點擊「會話」,didSelectRowAtIndexPath被調用就好。
- 我想現在(我已經遠離了的UITableViewController,而不是細胞,新的UITableViewController連接,並賦予它一個標識符進行賽格瑞
我打電話。
[self performSegueWithIdentifier:@"programToSessions" sender:self];
prepareForSegue被稱爲,但沒有任何事後。沒有錯誤,沒有警告。新的UITableViewController沒有顯示。
- 注意:但是,如果我切換到「模式」原來的標籤欄在底部然後(不打算...)
到目前爲止,我的問題似乎有一個可能的解決方案。導航控制器。我想,如果我在AppDelegate中設置了一個導航控制器引用,一旦加載了實際的根控制器(在viewDidLoad中),即在viewDidLoad中基本上使用了一些東西:app.navController = self.navigationController
- 就可以工作!對?所以,我將賽格動作改爲: [app.navController performSegueWithIdentifier:@"programToSessions" sender:self];
然而,沒有任何變化,它沒有顯示出來。
任何想法?
解決:
有在這裏的幾個問題。主要問題是我錯過了在UITabBarController和UITableViewController之間放置一個「導航控制器」。這可以通過向故事板中添加一個新的「導航控制器」來完成,然後從UITabBarController(rootViewController)拖到這個新的控制器並設置RELATIONSHIP。接下來,將一個RELATIONSHIP拖動到UITableViewController。因此,通過正確的答案概括它應該看起來像: 的UITabBarController - >(關係) - >的UINavigationController - >(關係) - >的UITableViewController
爲了在最後的頂部加載新UITableViewControllers UITableViewController,一個簡單的segue並通過代碼調用它就足夠了。最後的樹看起來像:
的UITabBarController - >(關係) - >的UINavigationController - >(關係) - >的UITableViewController - >(SEGUE) - >的UITableViewController
給了一個賽格瑞標識符。在代碼中,使用此:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"loadMyDetailView" sender:self];
}
您的解決方案爲我工作。你應該將它作爲答案發布,以便人們可以投票。 – 2012-01-23 21:28:13