Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Objective-c:UIView中的presentViewController_Iphone_Ios_Objective C_Uiviewcontroller - Fatal编程技术网

Iphone Objective-c:UIView中的presentViewController

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

我试图在UIView中使用presentViewController

当我单击顶部/右侧的“+”按钮时,我想用UIViewController替换右侧的tableview(在图像的灰色部分)

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