如您在此屏幕截图中所见,我正在创建一个具有不同视图的应用程序。
但是,当我点击“转换”时,它只是再次使用viewDidLoad
加载视图,因此每次都会执行该操作,因此它总是在打开时重置。但是,当您拥有带选项卡的应用程序时,它只会使用viewDidLoad
加载它,然后每当您再次打开它时,它就已经加载了viewDidAppear
。
有谁知道我如何能够像在选项卡式应用程序中一样使控制器保持 Activity 状态?
*选项卡式应用程序的图像-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属性)。
不过,这是一项工作,并且并非免费提供。
另外,如果您没有导航控制器,或者不需要在要保持 Activity 的视图控制器顶部堆叠更多的视图控制器,则可以尝试将它们移出屏幕(负坐标)。或超出窗口的边界。但是不要为此使用常量。我们都不知道 future 的设备将具有什么屏幕尺寸。请在运行时从实际窗口中获取边界。)