gpt4 book ai didi

ios - 恢复并保留从 UINavigationController 推送的 UIViewController,没有 Storyboard

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:23 25 4
gpt4 key购买 nike

我尝试恢复我从初始 View Controller 推送的简单 UIViewController。第一个被保留,但第二个在重新启动时就消失了。我不使用 Storyboard。我在每个 View Controller 中实现该协议(protocol),并将 restorationIdentifier 和 restorationClass 添加到它们中的每一个。

第二个 viewController 继承自第三个 viewController 并从 xib 文件初始化。我不确定是否需要将 UIViewControllerRestoration 实现到第三个,因为我不直接使用它。

我的代码看起来通常是这样的:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.restorationIdentifier = @"EditNotificationViewController";
self.restorationClass = [self class];
}
return self;
}

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{

}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{

}

+(UIViewController *)viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder
{
EditNotificationViewController* envc = [[EditNotificationViewController alloc] initWithNibName:@"SearchFormViewController" bundle:nil];
return envc;
}

是否应该将 navigationController 子类化,以便它也可以从 UIViewControllerRestoration 继承?

更新:好的,从 UIViewController 推送到 UIViewController 似乎可行。但是从 UIViewController 推送到 UITableViewController 或从 UIViewController 推送到 UITableViewController 是行不通的。如果 tableview 实现了 UIViewControllerRestoration 协议(protocol),应用程序就会崩溃。如果我不实现该协议(protocol),则不会保留从 tableView 推送的 UIViewControllers。

应该如何对待 UITableViewControllers 以在不发生崩溃的情况下保存它们?

更新:不再崩溃了。这是由于我的应用程序特有的内存错误。但是 tableView 仍然没有保留,推送的 viewController 也没有。

更新:我的 tableview 没有正确恢复的原因是因为我在后台删除了我的数据源。但是当我尝试将它推到另一个 navigationController 而不是 self.navigationController 时,我仍然遇到模态 viewController 没有显示的问题。我将恢复标识符设置为此模态 navigationController,但 View 未显示。

最佳答案

模态转换需要由 UINavigationController 支持,它具有 restorationIdentifier 和恢复类或应用程序委托(delegate)方法 viewControllerWithRestorationIdentifierPath 中的相应实现。这解决了最后一个问题。

关于ios - 恢复并保留从 UINavigationController 推送的 UIViewController,没有 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com