我是 iOS 编程的新手,我正在使用ECSlidingViewController创建一个滑出菜单(如 Facebook)。所以想象一下,如果我的菜单中引用了两个视图。
当我打开应用程序时,它显然会调用viewDidLoad
我的顶视图(我菜单中的第一个)。如果我打开菜单并选择第二个视图,它也会要求viewDidLoad
这样做。但是,如果我回到第一个视图,它将再次调用该方法,这是我不想要的。我有一些设置代码,如果可能的话,我不想重新实例化视图。我见过 Facebook,他们不会恢复视图,因为它会记住我在 Wall 上的滚动位置,例如,当我切换视图并返回时。
这是我在选择时触发的委托方法:
- (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
超过一次。
谢谢你。