我之所以需要一个全局IBOutlet变量,是因为,我不想在你切换回视图后丢失数据。 例如,我有一个IBOutlet
和UIlabel
并设置其文本。
@property (retain, nonatomic) IBOutlet UIImageView *imageView;
@property (retain, nonatomic) IBOutlet UITextField *inputText;
@property (retain, nonatomic) IBOutlet UILabel *warnningLabel;
在我从另一个视图切换回来后,UILabel将被设置为nil,我不希望它发生。有什么想法吗?
您的问题表明您将数据存储在视图中。这意味着您违反了MVC(模型-视图-控制器),这是问题的根源。正确的解决方案是将数据移出视图和视图控制器,并将其放入单独的模型对象中。然后你不在乎你什么时候在屏幕上或屏幕外。正如 Andrei G 所指出的,您将在 viewWillAppear:
中重新加载模型中的数据。
之前关于此主题的一些讨论:
- 为 MVC 设计模式组织 iOS 项目
- MVC:将模型指针传递给视图?
- Cocoa MVC:应用程序工作逻辑打算放在哪里?
- MVC:为什么要分离模型、视图和控制器?
- UITableView 上的 GCD 实现
试试这个:
在viewDidDisappear上使用NSUserDefaults保存值(或声明全局NSString变量),并在viewDidAppear上设置UILabel.text