从弹出视图内部呈现模态视图控制器

9
在我的通用应用程序中,有一个部分可以查看我们系统中现有的笔记列表(通过简单的Web服务检索),并且也可以在需要时创建新的笔记。对于iPhone,它的布局非常简单,使用TableViewController显示带有“添加”按钮的列表,该按钮位于NavigationBar上,以呈现添加新项的模态视图。但是,在iPad上,相同的布局浪费了很多空间,因此我选择了弹出窗口方法,以在弹出窗口中显示列表,然后让用户从那里添加。我的问题在于,当用户在PopOver视图内点击Add按钮时,模态视图全屏显示,而不仅仅是在PopOver视图内显示。以下是我目前拥有的代码:
-(void) AddButtonPressed:(id)sender {

NewNoteVC *newNote = [[[NewNoteVC alloc] initWithNibName:@"NewNoteVC" bundle:nil] autorelease];
newNote.defaultClientID = defaultClientID;
UINavigationController *navCon = [[[UINavigationController alloc] initWithRootViewController:newNote] autorelease];
if ([isPopOver isEqualToString:@"YES"]) {
    [navCon setModalInPopover:YES];
    [self.navigationController setModalInPopover:YES];
    [self.navigationController presentModalViewController:navCon animated:YES];
}
else {
    [self.navigationController presentModalViewController:navCon animated:YES];
}

“isPopOver”字符串只是从调用此TableView的前一个屏幕发送的占位符(我知道我可以将其转换为布尔值以获得更好的性能,我只是很快地把它放在一起尝试一下)。我知道我弄错了什么地方,只是不知道需要哪些设置才能让它正常工作。


2个回答

26

您需要将视图控制器的modalPresentationStyle定义为“current context”。

navCon.modalPresentationStyle = UIModalPresentationCurrentContext;

这将导致模态视图控制器填充弹出窗口,就像弹出窗口的根控制器一样。


2

尝试使用presentViewController:animated:completion:代替presentModalViewController:animated:并设置self.navigationController.definesPresentationContext = YES


请注意,这个短语是关于IT技术的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接