0

我试图在 UIView 中使用 presentViewController。

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

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

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

当然,通过这样做,整个屏幕都被替换了。我想要这样的东西:

[contentView addSubview:controller];

或者

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

其中 contentView 是包含 tableview 的 UIView

我找到了这个addChildViewController 和 presentViewController但我认为这不能帮助我

谢谢

编辑:

在情节提要中使用 ContainerView 解决了我的问题

4

5 回答 5

1

您可以将控制器添加viewcontentView. 但是,请务必在执行此操作时保持对控制器的强烈引用。

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

于 2013-04-03T12:17:12.987 回答
1

编辑您的声明:

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

试试这个,然后让我知道它是否有效!

于 2013-04-03T12:24:41.120 回答
0

我不确定我是否理解正确。从您的照片中,我相信您正在为 iPad 编程,并且您想用另一个视图部分覆盖整个视图。如果是这样,您可以使用 a UIPopoverController,它正是这样做的。

于 2013-04-03T12:22:08.323 回答
0

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;
于 2013-04-03T12:31:53.027 回答
0

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

SomeViewController *viewController=[[SomeViewController alloc]init];

[viewController setFrame:CGRectMake(x,y,width,height)];

[self.view addsubview:viewController.view];

对不起,如果我错了...

于 2013-04-03T13:36:23.487 回答