私はストーリーボードを使って提案されたアプリのインターフェースをレイアウトしています。私は、トップに検索バーコントローラを持つテーブルビューコントローラにセグメンテーションするボタンを持っています。私はAppleの非常に基本的な例の1つに従っています。検索の方法はhereです。この例では、単一のテーブル・ビュー・コントローラを使用して、検索する検索語データを後続のビューに保存します。私は、データを保存するための3つのコア行をコメントアウトした場合、検索データを保存しようとした後にセグが返ってきたらiPhoneアプリがクラッシュする
@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];
}
すべてが思い出すの例外を除いて(それが必要として動作します。検索データは、(私もオブジェクト定義を含めています)、このコードを使用して保存されます検索オブジェクトの状態)。私が考えているのは、ビューがviewDidDisappearメソッドが呼び出される前に、おそらくsegueの一部としてビューが "破棄"されているためです。 "self"はもう利用できません。
この問題を解決する正しい/最善の方法は何ですか?
私はあなたの提案をありがとう、私はそれが最終的に動作すると思う/と/または私はオプションとしても探検してきたAppDelegateを使用すると思います。 – user1159106
私は、テーブルビューコントローラのprepareForSegueメソッドにコードを配置すると、そのコードが動作することを知りました。私は、いくつかの事柄については、viewForwardをviewDidDisappearメソッドの代わりに使用する必要があると推測しています。 – user1159106
あなたはまだこの回答を受け入れることができます... – Mundi