2011-06-30 13 views
0

私は2つの検索バー、いくつかのボタンとそれらの下のテーブルビュー(はい、これらすべて)を1つのビューで持っています。また、その上に戻るボタンが付いたナビゲーションバーもあります。ビューが再読み込みされないのはなぜですか?

特定の操作では、すべての検索バー、ボタンを削除して、私のビューに1つのuitableviewcellしか表示しません。

私がeditを押すと、tableViewだけでなく、全体のビューをリロードすることができますが、ビューに検索バーとボタンとナビゲーション画面が表示されるようにします。

は、editボタンのIBActionで行いました。コントロールはここに表示されますが、ビューはリロードされません。どうして?

答えて

-1

私はStackOverflowでここに投稿した直後にどのように答えを得るのか分かりません。トラブルの男性のため申し訳ありません(ため息!)

私は、ビューの状態をリフレッシュ処理するためのより良い方法は、あなたが最初に呼び出すことができるカスタムメソッドにあなたのUIViewControllerのビューのサブビューの抽象的構成にある[self viewDidLoad];

+0

これは非常に古い質問ですが、 '[self viewDidLoad]'を呼び出すことは素晴らしい方法ではありません。あなたが言及した場合にはうまくいくかもしれませんが、私は追加の答えを提供しました。 – Jessedc

0

reloadInputViewsは、firstRespondersであるビューに特に使用されます。おそらくself.viewは当時の最初のレスポンダーではないでしょう。しかし、なぜこれを "reloadInputViews"を使ってやりたいのですが、それは使いにくいでしょう:[self.view setNeedsLayout]?

+0

これはなんですか? – Legolas

+0

[self.view setNeedsLayout]強制的に "layoutSubviews"メソッドを呼び出します。このメソッドでは、 "編集"ボタンの状態(選択されている/選択されていない)に従って、サブビューの表示/非表示とテーブルビューフレームの変更により、ビューを再レイアウトします。テーブルビューの内容も変更する必要がある場合は、[tableView reloadData] – viggio24

+0

を呼び出してください。とにかくありがとう – Legolas

0

をしましたのアクションとして、viewDidLoadからビューは遅延ロードされた後viewDidLoadがシステムによって自動的に呼び出されるため、それは違いを作る価値が

- (void)viewDidLoad { 
    //Specific, non repeated view setup 
    [self resetViewState]; 
} 

- (void)resetViewState { 
    //Repeatable view setup 
} 

理由があります。設計上、ビューごとに複数回呼び出されるメソッドではありません。ビューが破棄され再作成された場合は、再度呼び出されます。

レイアウト作業を行う必要がある場合は、UIViewControllerのサブビューのレイアウトをviewWillLayoutSubviewsに移動することもできます。これは、さまざまな時点でシステムから呼び出されます。

関連する問題