簡體   English   中英

如何在Apple的SampleDetailViews樣本的詳細視圖中推送視圖控制器?

[英]How can I push view controllers in detail view of Apple's sample MultipleDetailViews?

我的目的是實現類似於原生iPad設置應用程序的東西。 設置使用UITableViewController ,因此,在詳細視圖中可以深入查看子視圖,但是我希望能夠通過詳細視圖中的按鈕點擊來推動視圖控制器。

所以我試圖擴展MultipleDetailViews示例應用程序:
1) SecondDetailViewController具有屬性navigationController (只讀)設置為nil ...
2)所以我創建了一個新的UINavigationController並使用它來推送我的控制器,但這不起作用。

我的代碼:

if (!self.myNavigationController) {
    self.myNavigationController = [[UINavigationController alloc] initWithRootViewController:self];
}

FirstDetailViewController *controller = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailView" bundle:nil];

[[self myNavigationController] pushViewController:controller animated:YES];

[controller release], controller = nil;

也嘗試了UINavigationController上的init方法,但是也沒有用。

我是否嘗試過在沒有實現自定義UISplitViewController情況下無法實現的UISplitViewController 我是否被示例代碼誤導為SecondDetailViewControllerUINavigationBar

我正在尋找類似問題的解決方案。 在我的情況下,我希望tableview鏈接到多個詳細視圖,具體取決於選擇。 我可以在一個viewcontroller上覆蓋數據但是正在尋求更好的解決方案。 這就是我做的。 它的簡單和工作比我迄今為止發現的一些復雜和過時的選項要好得多。

我只是在身份檢查器中將一個故事板ID提供給我想要顯示在detailview(“second”)中的viewcontroller,並在didSelectRowAtIndexPath上添加:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

  }

因此,當有人按下主視圖中的單元格時,將推送詳細視圖。

一個簡單的if語句可以切換顯示的視圖:

   if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"Second Choice"]) {
        TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

  else if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"First Choice"]) {
        TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"first"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

    };

你可以簡單地使用按鈕,開關或其他任何東西而不是表格視圖,但重點是通過在“身份檢查器”中添加“故事板ID”

並簡單地通過引用“故事板ID”來實例化視圖控制器,然后將其推送到索引1(細節側)的拆分視圖控制器,它簡單快捷

 TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

你可以使用:

showDetailViewController(viewController, sender: nil)

關於Apple的文檔就在這里

為了能夠這樣做,你必須將viewController推送到數組中的每個viewController。 像這樣:

[[self.appDelegate.splitViewController.viewControllers objectAtIndex:0] pushViewController:rootLevel1 animated:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] pushViewController:detailLevel1 animated:YES];

信用和代碼: http//kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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