私はiPhoneアプリを開発しています。UIViewController
クラスがあり、カバーフローアニメーションがいくつかあります。デザインによれば、ビューの上に5つのボタンがあり、各ボタンにIBAction
メソッドがあります。ボタンをクリックすると、さまざまなデータを含むさまざまなカバーフローのセットを表示する必要があり、カバーフローの数も1つのボタンアクションから別のアクションに変化します。私の問題は、これらのボタンをクリックしたときにページを更新する方法(リロード)です。明示的にviewDidLoad
を呼び出すのは非常に悪い考えです。どうすればこれを達成できますか?何卒よろしくお願いいたします。
それ自体を再描画するビューを取得する最も簡単な方法は、[UIView setNeedsDisplay]を呼び出すか、[UIView setNeedsDisplayInRect]を使用することです。このメソッドは、自分自身とそのサブビューを再描画する必要があることをビューに伝えます。ただし、これを常に呼び出す必要はありません。ビューにそれ自体を再描画させる他の方法があります。たとえば、[UIView addSubview:]または[UIView removeFromSuperview]を使用してビュー階層にビューを追加または削除した場合などです。
これらのメソッドにより、システムはビューのdrawInRect:メソッドを呼び出します(カスタム描画コードでオーバーライドした場合)。カスタム描画でこのメソッドをオーバーライドしなかった場合は、サブビューが同じメッセージを受信するため、再描画する機会が得られます。
追加情報はこちら。特に「ビュー描画サイクル」というセクションをお読みください。
なぜページをリロードしたいのですか?ビューを変更していて再描画したい場合は、次のように呼び出すことができます。
setNeedsDisplay();
ただし、ビューの境界が変更されるたびに自動的に呼び出されるため、これは多くの場合必要ありません。
ViewDidLoadメソッドで関心のある部分を更新/再ロードする以外に、他の要素が多すぎる場合は、更新部分をプライベートメソッド(methodAなど)に抽出できます。ボタンをクリックするたびに、そのmethodAを呼び出します。ただし、methodAはまだsetNeedsDisplayを呼び出すか、関心のある部分を再描画する必要があると思います。それが役に立てば幸い。
To Refresh your UIViewController, When Clicking the button >>
Add the below code into your UIButton method,
-(IBAction)button:(id)sender{
[self viewDidLoad];
[self viewWillAppear:YES];
}
Now Build and Run Your Code.