2


这是我的问题。

  1. 我有一个 tabBar 应用程序。
  2. 在第一个选项卡中,我有一张桌子。
  3. 在点击表格时,它会显示一个模式视图。
  4. 要从模态视图返回到第一个视图,我使用
[self presentModalViewController:nw animated:YES];

问题是,如果我在打开模态视图时单击选项卡栏,它会打开第二个视图,但第一个视图的表格不起作用,因为模态视图仍处于打​​开状态,尽管它显示为已关闭。

这是一种在覆盖标签栏的全屏模式下打开模式视图的方法吗?
或者还检查模态视图是否从另一个视图关闭?


编辑: 我尝试了所有这些代码:

 nw = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil];
 nw.modalInPopover = YES;
 nw.wantsFullScreenLayout = YES;
 nw.hidesBottomBarWhenPushed = YES;
 nw.contentSizeForViewInPopover = CGSizeMake(320, 480);
 nw.modalPresentationStyle = UIModalPresentationFullScreen;
 nw.view.frame = [[UIScreen mainScreen] applicationFrame];
 [nw.view setNeedsLayout];

但什么都没有!不能全屏!!

请问有什么想法吗?

谢谢,
阿尔贝托

4

2 回答 2

1

如果您正在呈现的视图是全屏的,这应该会遮挡标签栏。也就是说,您可能需要以编程方式重新调整视图的大小,使其与 UIWindow 的大小相同。

您应该能够按照以下方式做一些事情...

[nw setFrame:[[UIScreen mainScreen] applicationFrame]];
[nw setNeedsLayout];

...为达到这个。(对不起,我现在在 Windows 机器上,所以我无法确认这一点。希望有人会在需要时提供任何调整。)

然后,您应该通过原始类中的委托方法关闭初始模式视图。(请参阅 Apple 的iOS 视图控制器编程指南的“关闭模态视图控制器”部分。)然后,原始类将处理模态视图。

于 2010-12-20T20:11:32.190 回答
0

使用通知解决!

当标签更改时,我发送通知并关闭模态控制器。

- (BOOL)tabBarController:(UITabBarController *)tbController shouldSelectViewController:(UIViewController *)viewController { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"DataComplete" object:nil];
    return YES;
}

在我看来,类会收到通知并关闭控制器!

- (void)downloadDataComplete:(NSNotification *)notif {
    NSLog(@"Received Notification");

    [self dismissModalViewControllerAnimated:YES];
}

现在可以重新打开模态视图,也可以更改选项卡!
这是一种解决方法,但有效!

阿尔贝托。

于 2011-01-04T09:56:55.197 回答