簡體   English   中英

將導航控制器添加到選項卡欄應用程序(以編程方式)

[英]Adding a Navigation Controller to a Tab Bar Application (Programmatically)

對於某些人來說,這似乎是一個愚蠢的問題,但是在iPhone應用程序中處理不同類型的控制器對我來說仍然有些模糊。 設置如下:

我有一個帶有四個標簽的標簽欄應用程序。 每個選項卡將控制權傳遞給其各自的ViewController,其中的一些通過.XIB文件初始化,而另一些則完全以編程方式完成。 編程的一種是DirectionsViewController ,它本質上是一個UITableViewController 從其表中選擇一個單元格需要呈現(模態化) DetailedDirectionsViewController ,它需要對呈現視圖控制器進行某種反向引用。 我想這樣做是一個導航控制器添加到最簡單的方法DirectionsDetailedDirections風險投資-除了我不知道如何做到這一點沒有的.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM