Iphone Objective-c:UIView中的presentViewController
我试图在UIView中使用presentViewController 当我单击顶部/右侧的“+”按钮时,我想用UIViewController替换右侧的tableview(在图像的灰色部分)Iphone Objective-c:UIView中的presentViewController,iphone,ios,objective-c,uiviewcontroller,Iphone,Ios,Objective C,Uiviewcontroller,我试图在UIView中使用presentViewController 当我单击顶部/右侧的“+”按钮时,我想用UIViewController替换右侧的tableview(在图像的灰色部分) - (void)add:(id)sender { UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"testview"]; [self presentViewControlle
- (void)add:(id)sender
{
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"testview"];
[self presentViewController:controller animated:YES completion:NULL];
}
当然,这样做会替换整个屏幕。。
我想要这样的东西:
[contentView addSubview:controller];
或
其中contentView是包含tableview的UIView
我找到了这个,但我觉得这帮不了我
谢谢
编辑:
在故事板中使用ContainerView解决了我的问题您可以将控制器的
视图
添加为内容视图
的子视图。但是,在执行此操作时,请确保保留对控制器的强引用
另一种方法是将新视图归演示控制器所有,而不是第二个控制器,并根据需要简单地隐藏/显示视图。我不确定我是否理解您的意思。从你的照片中,我相信你正在为iPad编程,你想用另一个视图部分地覆盖整个视图。如果是这样,您可以使用一个
UIPOPCovercontroller
,它正好做到这一点。编辑您的语句:
[self.navigationController presentViewController:controller animated:YES completion:NULL];
试试这个,然后让我知道它是否有效 你需要的似乎是一个PopoverController。以下是一些样板代码:
UIPopoverController* aPopover = [[UIPopoverController alloc]
initWithContentViewController:navigation];
self.aPopoverController = aPopover;
[self.aPopoverController presentPopoverFromRect:nil inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
Overcontroller是类的一个属性
@property UIPopoverController* aPopoverController;
如果我明白的话。这会帮你的
SomeViewController *viewController=[[SomeViewController alloc]init];
[viewController setFrame:CGRectMake(x,y,width,height)];
[self.view addsubview:viewController.view];
抱歉,如果我错了…这样做,我没有“动画”效果:/而且controller.view比它必须的大?奇怪的是,我在interface builder中输入了完全相同的宽度/高度。无论如何,非常感谢:)如果您想要完全控制,那么您可能需要创建一个“容器视图控制器”作为详细视图,并将
controller
作为其子级。最后,有一个视图层次结构和一个控制器层次结构,它们不能很好地相互替代。请尝试在“container view controller”网站上进行谷歌搜索:apple.com
。有一些很好的参考。我只是想用一个新的视图控制器(在相同的位置,具有相同的尺寸)替换右侧的tableview。它不起作用:/通过这样做,控制器占据整个屏幕,我只想它占据与tableview相同的位置。为什么不这样做:[contentview添加子视图:控制器];然后显示视图控制器:contentview动画:是完成:NULL];因为contentview不是ViewController:/
SomeViewController *viewController=[[SomeViewController alloc]init];
[viewController setFrame:CGRectMake(x,y,width,height)];
[self.view addsubview:viewController.view];