我解决可能是最有图的帮助说明了问题:我工作的一个应用程序最佳实践层次结构
|---| |---|
| | | |
| B | --> | C |
| | | |
|---| |---|
^ |
| v
|---| |---|
| | | |
| A | --> | D |
| | | |
|---| |---|
其中一个导航控制器, A
呈现给用户。它包含一个集合视图。用户可以点击集合中的条目,并将D
推入导航堆栈,或者点击按钮在集合中创建新条目。这导致模态地呈现另一个导航控制器B
。作为创建条目的一部分,用户导航至推入B
的导航堆栈的C
。一旦用户配置了条目,我想要关闭模态呈现的控制器并直接转至D
以向用户显示新创建的条目。用户不应该看到A
到D
的转换。
如果我的解释相当缺乏,上述内容与标准日历应用程序中的流程非常相似:如果您在月视图中并创建新事件,它会以模态方式显示控制器,直接进入日视图。
C
可以拨打dismissViewControllerAnimated:completion:
返回A
。冒着问一个主观问题的风险,在C
自行解散之前是否有导致D
被推到A
的导航栈上的最佳做法?我可以通过B
将一个代表传递给C
,但是传递这样的东西感觉有点笨拙。我也考虑过使用通知,但这也不正确。也许故事板在这里会有所帮助,但是如果存在这样的事情,我更喜欢一种干净的基于代码的方法。