ストーリーボードを使用して、提案されたアプリのインターフェイスをレイアウトしています。検索バー コントローラーが上にあるテーブル ビュー コントローラーにセグエするボタンがあります。ここにある検索の実行方法に関するAppleの非常に基本的な例の1つに従っています。この例では、単一のテーブル ビュー コントローラーを使用し、検索語データを保存して、後続のビューで取得できるようにします。検索データは、次のコードを使用して保存されます (オブジェクト定義も含めています)。
@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];
}
データを保存するための 3 つのコア行をコメント アウトすると、すべて正常に機能します (検索オブジェクトのステータスを記憶することを除く)。私が考えているのは、セグエの一部としてビューが「破棄」されているため(おそらくviewDidDisappearメソッドが呼び出される前)、「自己」が使用できなくなっていることです。
この問題を解決する正しい/最善の方法は何ですか?