簡體   English   中英

以非模態方式呈現 UIViewController?

[英]Present UIViewController in non-modal way?

我有一個 UIViewController(稱為 A),但有時我需要顯示第二個 UIViewController(稱為 B),因為我不想打擾 A 中的 UI 操作(A 仍然需要響應一些觸摸操作),所以有什么方法以非模態方式顯示B?

嘗試這個 :

[self addChildViewController:viewControllerB];
[self.view addSubview:viewControllerB.view];

您可以輕松地將任何viewcontroller嵌入到另一個中。 看看這個:

UIViewController視圖中的iOS嵌套視圖控制器視圖?

您可以將B嵌入A中作為子視圖。

有關詳盡說明,請參閱http://subjective-objective-c.blogspot.co.uk/2011/08/writing-high-quality-view-controller.html ,有關簡單演示,請查看以下代碼: https:/ /github.com/toolmanGitHub/stackedViewControllers

您可以

addChildViewController

像這樣 -

- (void)loadContentView
    {
        CGFloat ht               = 0; // height you want to change;
        HomeAdsTVC_iPhone   *vc1 = [[HomeAdsTVC_iPhone alloc] init];
        [self addChildViewController:vc1];
        CGRect frame             = self.view.bounds;
        frame.origin.y           = ht;
        frame.size.height        -= ht;
        vc1.view.frame           = self.view.bounds;
        [self.view addSubview:vc1.view];
        [vc1 didMoveToParentViewController:self];
    }

我猜你在談論在iPhone中以模態方式呈現視圖控制器。 在iPad中,僅為了示例中的完整性,您有更多方法以模態方式顯示視圖控制器,而不是填滿整個屏幕。

您可以使用UIViewController包含。 總而言之,它只是將視圖控制器添加為另一個視圖控制器,同時將其視圖添加到層​​次結構中。 obj.io上查看本教程。 這就是@Justafinger的建議,但完全是因為@Justafinger忘記了一些重要的電話。

以下是在Swift中以非模態方式顯示視圖控制器的方法:

let newController = RegisterController()
self.addChildViewController(newController)
self.view.addSubview(newController.view)

以非模態方式刪除視圖:

view.removeFromSuperview()

非模態你是什么意思? 將控制器顯示為非模態的基本方法是:

[self presentViewController:myController animated:YES completion:nil];

或者使用完成處理程序

暫無
暫無

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

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