如您在此屏幕截图中所见,我正在创建一个具有不同视图的应用程序。

但是,当我点击“转换”时,它只是再次使用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 的设备将具有什么屏幕尺寸。请在运行时从实际窗口中获取边界。)

10-07 13:40
查看更多