【发布时间】:2011-01-13 13:50:41
【问题描述】:
我有一个tabBarController,我通过将以下代码添加到其中:
AppDelegate.h:
...
UITabBarController IBOutlet *tabBarController;
}
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
AppDelegate.m:
...
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
[tabBarController setDelegate:self];
然后我使用下面的代码来呈现一个模态条码扫描视图控制器:
- (void)tabBarController:(UITabBarController *)tbc didSelectViewController:(UIViewController *)vc {
// Middle tab bar item in question.
if (vc == [tabBarController.viewControllers objectAtIndex:2]) {
ScanVC *scanView = [[ScanVC alloc] initWithNibName:@"ScanViewController" bundle:nil];
// set properties of scanView's ivars, etc
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:scanView];
[tabBarController presentModalViewController:navigationController animated:YES];
[navigationController release];
[scanView release];
}
}
当它真正呈现出来时,我认为这种方法在视觉上并不吸引人,因为当我关闭模态视图时,我会回到一个空视图。
例如,许多条码扫描应用程序或仅显示图像选择器的应用程序;非常成功地做到这一点。我只是想知道他们会使用什么样的实现来达到这样的效果。
这是一个名为 Path 的应用程序的屏幕截图,它具有我所追求的完全相同的功能:
我还注意到,在这些应用程序中,如果您在中间的选项卡栏项目之外的任何其他选项卡栏项目上,并且您单击显示模式视图的选项卡栏项目,一旦它被关闭它就不会实际上将它们带回一个空视图,它会像平常一样关闭它,但是永远不会选择呈现模态视图的实际标签栏项目。如果这是实现这种效果的唯一方法,我会对这种功能感到满意。
任何帮助将不胜感激,因为我已经被困了很长一段时间了。此外,我什至不确定将所有这些代码放入我的AppDelegate 是否是正确的方法,以便将视图控制器呈现为模式。这一切似乎都错了。
【问题讨论】:
-
我想你会发现 Path 应用正在使用他们自己的标签栏控制器实现。即不是来自 Cocoa Touch 的
UITabBarController
标签: iphone objective-c uiviewcontroller uitabbarcontroller uitabbar