【发布时间】:2013-04-21 00:28:05
【问题描述】:
我是 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。
谢谢。
【问题讨论】:
-
是的,当你第一次创建它时为其创建一个强属性,然后使用该属性而不是在下次需要时实例化一个新属性。
-
@rdelmar 那会是
UIViewControllers 的数组吗,因为我有多个视图?
标签: ios objective-c uiviewcontroller storyboard