首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在控制器之间导航,快速

如何在控制器之间导航,快速
EN

Stack Overflow用户
提问于 2020-07-13 14:01:12
回答 2查看 86关注 0票数 0

为了学习,我正在模拟iphone的笔记。我想在控制器之间进行导航。有两种方法:导航控制器和现有/排除方法。现在我用第二个。

我有三个屏幕:“笔记列表”、“观察笔记”屏幕和“编辑/记录”屏幕。当我转到"existingNote ->编辑existingNote“(从”便笺列表“中发生”礼物“,然后从”观看笔记“屏幕中出现”呈现“),编辑它并保存,执行解散(一次),而我的屏幕变成”观察笔记屏幕“,这是没有问题的。但是当我做笔记(从“笔记列表”屏幕上发生)并保存,执行“解散”,我的屏幕变成“笔记列表”屏幕,但我想看到“观察笔记”屏幕,想看只是做笔记。

我可以在现在/解雇之前做这件事吗?或者我必须使用NavigationController?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-13 16:09:05

使用当前/解散的

在做笔记后,你需要在“笔记列表”上以静默的方式呈现“观察笔记”屏幕。这包括两个步骤:

  1. “便笺列表”屏幕应该知道“记笔记”正在被取消。您可以在两个控制器之间传递变量,或者使用您知道的dismissViewControllerAnimated:completion
  2. When,从“备注列表”中显示“备注”。记住使用animated: false,否则用户将看到屏幕显示动画.

使用导航控制器的:(强烈推荐)

  1. 导航控制器将为您提供更多的灵活性和在控制器之间移动的能力。您可以使用navigationController.popToViewController弹出所需的控制器列表/监视/制作/添加备注.

  1. --您的代码不会乱糟糟的,而且维护起来也很容易。您不需要传递变量,也不需要记住您来自哪个屏幕。您可以使用navigationController.viewControllers来知道堆栈中有哪些控制器。
票数 1
EN

Stack Overflow用户

发布于 2020-07-13 14:22:22

有一种方法可以通过导航控制器或视图控制器(即isBeingPresented )来识别您的导航控制器。

当视图控制器被显示时,isBeingPresented为真,当被推送时为false。

-(ViewWillAppear):(BOOL)动画{

代码语言:javascript
复制
[super viewWillAppear:animated];

if ([self isBeingPresented]) {
    // being presented
    DispatchQueue.main.async() {
        self.dismiss(animated: true, completion: nil)
    }
} else if ([self isMovingToParentViewController]) {
    DispatchQueue.main.async() {
        self.navigationController?.popViewController(animated: true)
    }
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62877532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档