以非模态方式呈现UIViewController?

时间:2014-04-15 09:25:59

标签: ios objective-c uiviewcontroller

我有一个UIViewController(称为A),但有时我需要显示第二个UIViewController(称为B),因为我不想打扰A中的UI动作(仍然需要响应一些触摸动作),所以是有没有方法以非模态方式显示B?

6 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

您可以轻松地将任何viewcontroller嵌入到另一个中。看看:

iOS Nested View Controllers view inside UIViewController's view?

答案 2 :(得分:1)

你可以

  

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];
    }

答案 3 :(得分:0)

我猜你在谈论在iPhone中以模态方式呈现视图控制器。在iPad中,仅为了示例中的完整性,您可以通过更多方式以模态方式显示视图控制器,而不会填满整个屏幕。

您可以使用UIViewController包含。 总而言之,它只是将视图控制器添加为另一个视图控制器,同时将其视图添加到层​​次结构中。 在obj.io查看本教程。这就是@Justafinger的建议,但完全是因为@Justafinger忘记了一些重要的电话。

答案 4 :(得分:0)

以下是如何在Swift中以非模态方式显示视图控制器的方法:

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

以非模态方式删除视图:

view.removeFromSuperview()

答案 5 :(得分:-2)

非模态你的意思是什么? 将控制器显示为非模态的基本方法是:

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

或使用完成处理程序

相关问题