Ios 如何保存UIScrollView的状态?
我的应用程序将子视图写入Ios 如何保存UIScrollView的状态?,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,我的应用程序将子视图写入UIScrollView。这些子视图是链接到应用程序其他部分的按钮,用户将在其中输入信息。我想保存此数据,包括应用程序退出时的子视图。我的ViewController(存储滚动视图及其所有子视图)在情节提要中具有恢复ID。我怎么用这个?这就是我到目前为止所做的: AppDelegate.m - (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
UIScrollView
。这些子视图是链接到应用程序其他部分的按钮,用户将在其中输入信息。我想保存此数据,包括应用程序退出时的子视图。我的ViewController(存储滚动视图及其所有子视图)在情节提要中具有恢复ID。我怎么用这个?这就是我到目前为止所做的:
AppDelegate.m
- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder {
return YES;
}
- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder {
return YES;
}
ViewController.m
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
[super encodeRestorableStateWithCoder:coder];
[coder encodeObject:self.scrollView forKey:@"scrollView"];
}
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder {
[super decodeRestorableStateWithCoder:coder];
}
在“模型-视图-控制器设计”(或任何sane设计)中,如果不希望物理存储视图,则不希望保存其他一些可以从中重新创建视图的模型数据 根据您的简短描述,您可能希望创建自己的模型对象,该模型对象支持NSCoding并存储它所表示的对象的整个状态。例如: 创建存储基本数据的模型对象(实现NSCoder): 或: 最后,从加载时的模型数据生成视图
- (void)loadViewsFrom:(NSArray*)buttonInfos
{
for (info in buttonInfos)
{
// Create new button
// modify properties
}
}
在“模型-视图-控制器设计”(或任何sane设计)中,如果不希望物理存储视图,则不希望保存其他一些可以从中重新创建视图的模型数据 根据您的简短描述,您可能希望创建自己的模型对象,该模型对象支持NSCoding并存储它所表示的对象的整个状态。例如: 创建存储基本数据的模型对象(实现NSCoder): 或: 最后,从加载时的模型数据生成视图
- (void)loadViewsFrom:(NSArray*)buttonInfos
{
for (info in buttonInfos)
{
// Create new button
// modify properties
}
}
您听说过
NSUserDefaults
属性列表吗?是的,但我认为它对我正在尝试的工作不起作用。NSUserDefaults只接受符合NSCoder的值。我可以将我的所有子视图存储在一个数组中,然后将该数组加载到NSUserdefaults对象中,但这样我就无法单独重新显示它们。是否有一种方法可以让我“快照”退出时的应用程序,然后重新加载该“快照”?您听说过NSUserDefaults
属性列表吗?是的,但我认为它不适用于我正在尝试的操作。NSUserDefaults只接受符合NSCoder的值。我可以将我的所有子视图存储在一个数组中,然后将该数组加载到NSUserdefaults对象中,但这样我就无法单独重新显示它们。有没有一种方法可以让我只“快照”退出时的应用程序,然后重新加载“快照”?
- (void)saveViews:(NSArray*)views
{
NSMutableArray* toWrite = ...
for (view in views)
{
// make button info from view, add to array.
}
}
- (void)loadViewsFrom:(NSArray*)buttonInfos
{
for (info in buttonInfos)
{
// Create new button
// modify properties
}
}