如何在 iOS5 中定义全局 IBOutlet 变量



我之所以需要一个全局IBOutlet变量,是因为,我不想在你切换回视图后丢失数据。 例如,我有一个IBOutletUIlabel并设置其文本。

@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

相关内容

  • 没有找到相关文章

最新更新