![](/img/trans.png)
[英]How do I connect UITabBar items from a UITabBar (not a UITabBarController) to different views in the IB?
[英]How do I keep views alive like UITabBar applications?
如您在此屏幕截图中所见,我正在创建一个具有不同视图的应用程序。
但是,当我点击“转换”时,它只是使用viewDidLoad
再次加载视图,因此每次都会执行此操作,因此它总是在打开时重置。 但是,当您有一个选项卡式应用程序时,它仅使用viewDidLoad
加载它,然后每当您再次打开它时,它都将加载viewDidAppear
因为它已经加载。
有谁知道我可以像在选项卡式应用程序中一样使控制器保持活动状态吗?
*选项卡式应用程序的图像-http: //s1.ibtimes.com/sites/www.ibtimes.com/files/styles/v2_article_large/public/2013/06/18/ios-7-notonthisphone-2.PNG
现在是如何加载视图。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *menuItem = self.menuItems[indexPath.row];
// This undoes the Zoom Transition's scale because it affects the other transitions.
// You normally wouldn't need to do anything like this, but we're changing transitions
// dynamically so everything needs to start in a consistent state.
self.slidingViewController.topViewController.view.layer.transform = CATransform3DMakeScale(1, 1, 1);
if ([menuItem isEqualToString:@"Transitions"]) {
self.slidingViewController.topViewController = self.transitionsNavigationController;
} else if ([menuItem isEqualToString:@"Settings"]) {
self.slidingViewController.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MESettingsNavigationController"];
}
[self.slidingViewController resetTopViewAnimated:YES];
}
如果有人是此方面的专家,则决定与所有人共享我的文件(显然我不是其中之一): http : //www.mediafire.com/download/1q6n01514bf78jo/Sldiing_App.zip
好吧,保留它们。
维护一些容器(数组或单个属性/ ivar等)并保留对其的引用。 然后,当用户点击“转换”时,不要重新创建视图及其控制器,而是将它们放回原处。
您可能需要维护每个视图控制器的子视图控制器调用层次结构,并操纵导航控制器的导航堆栈(有关UIViewController的viewControllers属性,请参阅文档)。 不过,这是一项工作,并且并非免费提供。
另外,如果您没有导航控制器,或者不需要在要保持活动的视图控制器上堆叠更多的视图控制器,则可以尝试将它们移出屏幕(负坐标)。或超出窗口的边界。但是不要为此使用常量。我们都不知道未来的设备将具有什么屏幕尺寸。请在运行时从实际窗口中获取边界。)
每当您点击“转换”时,我都会假设您正在对视图控制器进行分配/初始化,然后将其推入主视图所拥有的任何视图堆栈中。 相反,在加载侧菜单时分配/初始化一个全局视图控制器,并在单击“转换”时将其推入堆栈,而不是每次都创建一个新的(假设您的菜单持续存在并且每次都不加载)它也会出现)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.