如何使用tabbar在全屏模式下打开UIView?

时间:2010-12-20 19:56:15

标签: objective-c uiview uitabbar modalviewcontroller


这是我的问题。

  1. 我有一个tabBar应用程序。
  2. 在第一个标签中,我有一张桌子。
  3. 点击表格,它会显示一个模态 图。
  4. 从模态视图返回到第一个 查看,我用
  5. [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];
    

    但没有!它不会全屏进入!

    有什么好主意吗?

    谢谢,
    阿尔贝托

2 个答案:

答案 0 :(得分:1)

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

你应该能够做一些......

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

......实现这一目标。 (对不起,我现在在Windows的盒子上,所以我无法确认。希望有人会在需要时提供任何调整。)

然后,您应该通过原始类中的委托方法关闭初始模态视图。 (请参阅Apple View Controller Programming Guide for iOS的“关闭模态视图控制器”部分。)然后,原始类将处置模态视图。

答案 1 :(得分: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];
}

现在可以重新打开模式视图,同时更改标签!
这是一种解决方法,但有效!

阿尔贝托。