containerview中的presentViewController

时间:2013-10-31 21:29:04

标签: objective-c ios7 viewcontroller multipeer-connectivity

首先,这个问题不是this question的重复,因为解决方案不符合我的问题。

我想在MCBrowserViewController内显示presentViewController container。因为我不想要,所呈现的控制器遍及整个屏幕。

我的ViewController里面有容器,如下所示: enter image description here

我必须使用presentViewController,因为我的MCBrowserViewController需要此方法来触发重要部分。

我的问题是,我不知道如何呈现它,因为容器显然是一个视图,我不知道如何去做。

如何使用present-method显示容器内的viewcontroller?

2 个答案:

答案 0 :(得分:4)

我尝试将MCBrowserViewController添加为子视图控制器,并且工作正常。它一添加就开始搜索。在这个例子中,IBOutlet contView是一个常规的UIView(不是容器视图),其目的只是在IB中设置MCBrowserViewController的框架。

    -(IBAction)showController:(id)sender {
        MCPeerID *peerID = [[MCPeerID alloc] initWithDisplayName:@"MyPeer"];
        MCSession *session = [[MCSession alloc] initWithPeer:peerID];
        MCNearbyServiceBrowser *browser = [[MCNearbyServiceBrowser alloc] initWithPeer:peerID serviceType:@"Service1"];
        MCBrowserViewController *mcb = [[MCBrowserViewController alloc] initWithBrowser:browser session:session];
        [self addChildViewController:mcb];
        [mcb didMoveToParentViewController:self];
        mcb.view.frame = self.contView.bounds;
        [self.contView addSubview:mcb.view];
    }

答案 1 :(得分:1)

所呈现的视图控制器的帧由呈现上下文确定,该呈现上下文通常由根视图控制器(即全屏)提供。但是,表示层次结构中的任何呈现控制器都可以通过将其definesPresentationContext属性设置为true来提供上下文。然后,它的帧将用于确定所呈现视图的帧。 (请参阅演示文稿上下文提供Apple所提供的视图控制器所涵盖的区域View Controller Programming Guide