2012-01-19 3 views
0

私はストーリーボードを使って提案されたアプリのインターフェースをレイアウトしています。私は、トップに検索バーコントローラを持つテーブルビューコントローラにセグメンテーションするボタンを持っています。私は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"はもう利用できません。

この問題を解決する正しい/最善の方法は何ですか?

答えて

0

どの程度

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

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

viewWillDisappearでこれを実行すると、オブジェクトがまだ存在することが保証されます。

+0

私はあなたの提案をありがとう、私はそれが最終的に動作すると思う/と/または私はオプションとしても探検してきたAppDelegateを使用すると思います。 – user1159106

+0

私は、テーブルビューコントローラのprepareForSegueメソッドにコードを配置すると、そのコードが動作することを知りました。私は、いくつかの事柄については、viewForwardをviewDidDisappearメソッドの代わりに使用する必要があると推測しています。 – user1159106

+0

あなたはまだこの回答を受け入れることができます... – Mundi

関連する問題