gpt4 book ai didi

ios - 如何保存 UIScrollView 的状态?

转载 作者:行者123 更新时间:2023-11-29 13:12:50 25 4
gpt4 key购买 nike

我的应用程序将 subview 写入 UIScrollView。这些 subview 是链接到应用程序其他部分的按钮,用户将在这些部分中输入信息。我想保存这些数据,包括应用程序退出时的 subview 。我的 ViewController(存储 ScrollView 及其所有 subview )在 Storyboard中有一个恢复 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];
}

最佳答案

在 Model View Controller 设计(或任何理智的设计)中,您不想物理地存储 View ,您不想保存一些可以从中重新创建 View 的其他模型数据。

根据您的简短描述,您可能想要制作自己的支持 NSCoding 的模型对象并存储它所代表的对象的整个状态。例如:

创建一个存储基础数据的模型对象(实现NSCoder):

@interface ButtonInfo : NSObject <NSCoding>
@property(nonatomic, copy)NSString* title;
@property(nonatomic, assign)CGRect frame;
@property(nonatomic, retain)UIColor* color;
@end

您可以在保存时从 View 生成模型数据,或者将模型与 View 一起存储。

- (void)saveButtonInfos

或者:

- (void)saveViews:(NSArray*)views
{
NSMutableArray* toWrite = ...
for (view in views)
{
// make button info from view, add to array.
}
}

最终在加载时从模型数据生成 View 。

- (void)loadViewsFrom:(NSArray*)buttonInfos
{
for (info in buttonInfos)
{
// Create new button
// modify properties
}
}

关于ios - 如何保存 UIScrollView 的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762791/

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