[英]Adding a Navigation Controller to a Tab Bar Application (Programmatically)
對於某些人來說,這似乎是一個愚蠢的問題,但是在iPhone應用程序中處理不同類型的控制器對我來說仍然有些模糊。 設置如下:
我有一個帶有四個標簽的標簽欄應用程序。 每個選項卡將控制權傳遞給其各自的ViewController,其中的一些通過.XIB文件初始化,而另一些則完全以編程方式完成。 編程的一種是DirectionsViewController
,它本質上是一個UITableViewController
。 從其表中選擇一個單元格需要呈現(模態化) DetailedDirectionsViewController
,它需要對呈現視圖控制器進行某種反向引用。 我想這樣做是一個導航控制器添加到最簡單的方法Directions
和DetailedDirections
風險投資-除了我不知道如何做到這一點沒有的.xib文件。
另外,我將控制權移交給DetailedDirections
是通過以下方式更改Directions
:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailedDirectionsViewController *vc = [[DetailedDirectionsViewController alloc] initWithStyle:UITableViewStyleGrouped];
[self.tabBarController presentModalViewController:vc animated:YES];
}
我似乎記得我的一位教授說過, presentModalViewController
是一種舊方法,並且有更好的替代方案……我現在不記得他們了。
對於您要執行的操作,最好讓選項卡中的選項卡管理UINavigationController,並將該導航控制器的rootViewController
設置為DirectionsViewController。
然后,在方向視圖控制器的didSelectRowAtIndexPath:
方法中,您可以執行以下操作:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailedDirectionsViewController *vc = [[DetailedDirectionsViewController alloc] initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:vc animated:YES];
}
它會像您想要的那樣運行。 UINavigation控制器將負責在詳細的路線視圖控制器上放置一個后退按鈕。
如果我理解得很好,則只需在tableview:didSelectRow ..:中創建一個導航控制器,然后使用要模態顯示的視圖控制器對其進行初始化,然后將其呈現出來,創建一個UIBarButtonItem並將其添加到導航的導航欄中控制器作為選擇器,在內部使用dismiss命令創建一個新方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.