我试图使用NSKeyedArchiver来存储我的UITabBarController的状态。选项卡内部是UINavigationControllers,其中包含UITableViewControllers。
归档似乎没有任何问题。
当取消归档时,我遇到了UITableViewControllers的奇怪问题。 initWithCoder:被正确调用,我在里面做的第一件事就是调用[super initWithCoder:]
tableView似乎已正确重新创建,并且已设置了delegate和dataSource属性。如果我的initWithCoder:除了调用super并返回self之外什么都不做,那么我的表视图结束为空并且我的委托方法不会被调用。如果我连接self.tableView的delegate和dataSource属性,我正确地看到了我的内容,但是在选择时没有调用didSelectRowAtIndexPath,并且在一个实例中,我无法滚动直到重新加载tableView。
如果在initWithCoder中:我创建了一个新的UITableView,一切正常,但我不相信我应该这样做。
我做了一些我不应该尝试的事情,或者我错过了一些我需要添加的东西以使事情正常工作?
更新:在我的控制器中设置self.tableView = [decoder decodeObjectForKey:@"tableView"]
似乎解决了滚动/选择问题,但是生成的tableView始终是UITableViewStylePlain,但仍然看起来像是属性错误已经设定。
答案 0 :(得分:0)
您的设计模式肯定不寻常。通常,您不会尝试归档表视图,只是用于创建表视图的数据。然后,当您再次需要表视图时,您将使用您用于创建它的相同代码从这些数据中重新创建它。