繁体   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