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];
对不起,如果我错了…