簡體   English   中英

在導航控制器中一次添加通用視圖

[英]Add common views once in navigation controller

我要實現的目標是在界面構建器中設計UI的“共享”部分,並使用子視圖控制器向用戶顯示內容。 這聽起來像是在嘗試重塑UINavigationController ,但事實並非如此。 實際上,整個事物都嵌入其中。

看起來像這樣: 示例視圖

現在,我想做的是更改此BaseViewController子視圖控制器,並在導航欄中指示此更改,以便保留其所有功能。

我嘗試添加這樣的方法:

+ (UIViewController *)baseViewControllerWithChild:(UIViewController *)child {
    BaseViewController *base = [BaseViewController new];
    [base addChildViewController:child];
    child.view.frame = base.childViewControllerContainer.frame;
    [base.view addSubview:child.view];
    [child didMoveToParentViewController:base];

    return base;
}

然后像這樣使用它:

- (void)didTouch:(UIButton *)sender { 
    [self.parentViewController.navigationController pushViewController:[BaseViewController baseViewControllerWithChild:[DummyViewController new]] animated:YES];   
}

(注意: DummyViewController就是這樣-一個虛擬vc,僅用於測試,它僅在viewDidLoad設置了背景色)

此方法是第一個子視圖控制器中按鈕的處理程序。 到現在為止還挺好。 不幸的是,結果不符合預期-推送的視圖控制器為黑色。 首先,我認為這是因為BaseViewController是在storyboard rootViewController中設計的,最初設置為導航控制器的rootViewController 將其移動到xib文件並從代碼進行設置對我而言並不起作用,因為您無法在xib添加Container View

總而言之,我想有一個受BaseViewController類控制的BaseViewController設計,內容將作為它的childViewController添加。 推送新的視圖控制器將是對這些childViewController進行操作的結果,並且應相應地更新導航堆棧。

另外,整個事情都需要與iOS 7一起使用。

非常感謝您對如何實現這一目標的任何幫助!

該問題是由於base.childViewControllerContainer nil引起的-這是由於視圖控制器的view屬性延遲加載的事實引起的。 在訪問base.childViewControllerContainer之前添加[base view]解決了該問題,盡管我不確定這是否是唯一,最好的方法。

暫無
暫無

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

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