【发布时间】:2015-10-29 20:46:03
【问题描述】:
我有一个视图控制器 VC1,我正在对其进行以下两个操作:
- 通过调用从 VC1 的导航控制器推送另一个视图控制器 VC2
[VC1.navigationController pushViewController: animated:YES];
-
通过调用从 VC1 呈现另一个视图控制器 VC3。
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:VC3]; [VC1 presentViewController:navController animated:YES completion:nil];
现在当我从 VC2 到 VC1 时,我正在打电话
[VC2.navigationController popViewControllerAnimated:YES];
我正在从 VC3 到 VC1 调用
[VC3.navigationController dismissViewControllerAnimated:YES completion:nil];
我的问题是当我回到 VC1 时,我如何知道我是来自 VC2(通过解雇)还是 VC3(通过弹出)?
注意:VC1 在父视图控制器 VC4 中作为子视图控制器加载。
【问题讨论】:
-
“我的问题是当我回到 VC1 时,我如何知道我是来自 VC2(通过解雇)还是来自 VC3(通过弹出)?”问题是难闻的气味。你应该问自己为什么你认为你需要知道这一点。
-
回复 matt 的评论:因为我需要根据返回的位置以不同的方式更新我的 VC1 的 UI 元素。
-
没有。呈现的视图控制器或推送的视图控制器,它们应该更新任何需要更新的东西,这样当 VC1 得到
viewWillAppear:时,它就可以根据自己的属性确切地知道要做什么。或者,更好的是,VC1 有两个方法,其中一个将由呈现的 v.c. 调用,另一个将由推送的 v.c. 调用。更好地准备您的通信取决于您。不要使用诸如“我出现是因为推送的视图控制器被弹出”之类的东西来避免正确地完成这项工作。
标签: ios objective-c uinavigationcontroller pushviewcontroller popviewcontroller