私は iOS プログラミングが初めてで、ECSlidingViewControllerを使用してスライド アウト メニュー (Facebook など) を作成しています。メニューで 2 つのビューが参照されているとします。
アプリを開くと、明らかにviewDidLoad
トップ ビュー (メニューの最初のビュー) が呼び出されます。メニューを開いて 2 番目のビューを選択すると、それも呼び出さviewDidLoad
れます。ただし、最初のビューに戻ると、そのメソッドが再度呼び出されますが、これは望ましくありません。いくつかのセットアップ コードがあり、可能であればビューを再インスタンス化したくありません。Facebook を見たことがありますが、ビューを元に戻しません。たとえば、ビューを切り替えて戻った後などに、ウォールのスクロール位置が記憶されているためです。
これは、選択時にトリガーされる私のデリゲート メソッドです。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Get identifier from selected
NSString *identifier = [NSString stringWithFormat:@"%@", [self.menu objectAtIndex:indexPath.row]];
// Add the selected view to the top view
UIViewController *newTopVC = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
// Present it
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
CGRect frame = self.slidingViewController.topViewController.view.frame;
self.slidingViewController.topViewController = newTopVC;
self.slidingViewController.topViewController.view.frame = frame;
[self.slidingViewController resetTopView];
}];
}
特定の VC が既に作成されている場合、どうにかして取得する方法はありますか? そうすれば、 のみが呼び出され、複数回呼び出されることはviewWillAppear
ありません。viewDidLoad
ありがとうございました。