Objective-c:来自UIView的presentViewController

我试图在UIView内使用presentViewController。

http://img145.imageshack.us/img145/6334/appt.png

当我点击右上angular的“+”button时,我想用右边的UIViewController代替右边的tableview(在图片的灰色部分)。

- (void)add:(id)sender { UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"testview"]; [self presentViewController:controller animated:YES completion:NULL]; } 

当然,通过这样做,整个屏幕被replace..我想这样的事情:

 [contentView addSubview:controller]; 

要么

 [contentView presentViewController:controller animated:YES completion:NULL]; 

contentView是包含tableview的UIView

我发现这addChildViewController和presentViewController,但我不认为这可以帮助我

谢谢

编辑:

在Storyboard中使用ContainerView解决了我的问题

您可以将控制器view添加为contentView的子视图。 当你这样做的时候,一定要保持对控制器的强烈的参考。

另一种方法是使呈现控制器拥有的新视图而不是第二个控制器,并根据需要隐藏/显示视图。

编辑你的陈述:

 [self.navigationController presentViewController:controller animated:YES completion:NULL]; 

试试这个,然后让我知道如果它的工作!

我不确定我是否理解你的权利。 从你的照片,我相信你是一个iPad的编程,你想覆盖整个看法部分由另一种观点。 如果是这样,你可以使用UIPopoverController ,这正是这个。

一个PopoverController似乎是你所需要的。 这是一些样板代码:

 UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:navigation]; self.aPopoverController = aPopover; [self.aPopoverController presentPopoverFromRect:nil inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

aPopoverController是该类的一个属性。

 @property UIPopoverController* aPopoverController; 

如果我理解清楚。 这会帮助你

 SomeViewController *viewController=[[SomeViewController alloc]init]; [viewController setFrame:CGRectMake(x,y,width,height)]; [self.view addsubview:viewController.view]; 

对不起,如果我错了…