0

我正在使用故事板来布局提议的应用程序的界面。我有一个按钮,它可以连接到顶部带有搜索栏控制器的表格视图控制器。我正在关注 Apple 关于如何在此处找到的搜索的一个非常基本的示例。此示例使用单个表视图控制器并保存要在后续视图中检索的搜索词数据。使用此代码保存搜索数据(我还包括对象定义):

@interface SearchTableViewController : UITableViewController {
  NSMutableArray *listOfLists;
  NSMutableArray *filteredListOfLists;
  NSString *savedSearchTerm;
  NSInteger savedScopeButtonIndex;
  BOOL searchWasActive;
}
@property (nonatomic, strong) NSMutableArray *listOfLists;
@property (nonatomic, strong) NSMutableArray *filteredListOfLists;
@property (nonatomic, copy) NSString *savedSearchTerm;
@property (nonatomic) NSInteger savedScopeButtonIndex;
@property (nonatomic) BOOL searchWasActive;
@end

- (void)viewDidDisappear:(BOOL)animated
{
  [super viewDidDisappear:animated];
  // save the state of the search UI so that it can be restored if the view is re-created
  self.searchWasActive = [self.searchDisplayController isActive];
  self.savedSearchTerm = [self.searchDisplayController.searchBar text];
  self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
}

如果我注释掉保存数据的三个核心行,一切都会正常运行(除了记住搜索对象的状态)。我认为正在发生的是视图作为 segue 的一部分被“破坏”(可能在调用 viewDidDisappear 方法之前),因此“self”不再可用。

解决此问题的正确/最佳方法是什么?

4

1 回答 1

0

怎么样

[[NSUserDefaults standardUserDefaults] 
   setValue:searchDisplayController.searchBar.text 
     forKey:"SavedSearchTerm"];

[[NSUserDefaults standardUserDefaults]
   valueForKey:"SavedSearchTerm"];

?

这样做viewWillDisappear将确保对象仍然存在。

于 2012-01-19T18:11:31.570 回答