如何使用标签栏以全屏模式打开 UIView?
Posted
技术标签:
【中文标题】如何使用标签栏以全屏模式打开 UIView?【英文标题】:How to open an UIView in fullscreen mode with a tabbar? 【发布时间】:2010-12-20 19:56:15 【问题描述】:这是我的问题。
-
我有一个 tabBar 应用程序。
在第一个选项卡中,我有一个表格。
点击表格会显示一个模态
查看。
从模态视图返回到第一个视图
看,我用
[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];
但是什么都没有!!!不能全屏!! 请问有什么想法吗? 谢谢, 阿尔伯托
【问题讨论】:
您以模态方式呈现什么视图/视图控制器? @middaparka: 是点击table view时翻转的view,点击[self present.....]时关闭 【参考方案1】:如果您呈现的视图是全屏的,这应该会遮挡标签栏。也就是说,您可能需要以编程方式重新调整视图的大小,使其与 UIWindow 的大小相同。
你应该能够按照...的方式做一些事情
[nw setFrame:[[UIScreen mainScreen] applicationFrame]];
[nw setNeedsLayout];
...实现这一点。 (抱歉,我目前在 Windows 机器上,所以我无法确认这一点。希望有人会在需要时提供任何调整。)
然后您应该通过原始类中的委托方法关闭初始模式视图。 (请参阅 Apple 的 View Controller Programming Guide for ios 的“解除模态视图控制器”部分。)然后,原始类将处理模态视图。
【讨论】:
对不起,我无法以这种方式全屏显示 nw ......它是一样的。【参考方案2】:使用通知解决!
当标签更改时,我发送通知并关闭模态控制器。
- (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];
现在可以重新打开模态视图并更改选项卡! 这是一种解决方法,但有效!
阿尔贝托。
【讨论】:
如果你想要全屏,请从界面生成器中删除 uiviewcontroller 对象!以上是关于如何使用标签栏以全屏模式打开 UIView?的主要内容,如果未能解决你的问题,请参考以下文章