iOS UINavigationController 基础知识和自定义后退按钮

Posted

技术标签:

【中文标题】iOS UINavigationController 基础知识和自定义后退按钮【英文标题】:iOS UINavigation Controller basics and custom back button 【发布时间】:2013-05-24 19:47:29 【问题描述】:

我制作了我的第一个“严肃”的 ios 应用程序,在整个 UINavigation 概念上遇到了一些问题,但一切都井井有条。我正在寻找我的问题的答案,但没有找到我想要的,所以就在这里。

我想为一个游戏制作菜单,应该是这样的:

1) 它是一个 RootViewController,它包含一些按钮:新游戏、选项、关于。

2)我认为它会是另一个视图控制器(当我们触摸新游戏按钮时它必须出现,当我们选择游戏难度时我们会看到一个菜单)按钮是:简单,中等,困难

3)游戏视图控制器(我认为这个VC不会是UINavigationController的一部分)。

我想在这个菜单中体现一些概念。

就是这样:我不想使用 UINavigationController 导航栏,我不会为 UINavCon 使用标准幻灯片动画,我想让我的按钮“移动到透明”并返回第 2 段中提到的另一个菜单上面,不一定要更改背景或菜单项以外的其他内容。 我想使用自定义后退按钮,并将其添加到我想要的位置而不是导航栏。

我对菜单项的动画有一些想法。

我不知道:

为我的目的使用 UINavigationController 更好还是使用普通 ViewController 更好?

如果我制作 UINavigationController,我能否在我的故事板中看到它是“子 VC(我的意思不是根 VC)”,或者它将以编程方式创建,我必须在代码中制作 UI?如果我必须以编程方式执行此操作,我是否可以从情节提要中的 UINavigationController 进行转场,或者我也必须从代码中执行此操作?

例如,我能否制作一个 UIButton,并从导航栏的普通 UINavigationController 后退按钮为其分配功能?

有些问题可能很愚蠢,但希望你不要对我做出严厉的评判。

【问题讨论】:

如果你使用segues和storyboards,你可以选择自定义动画,你可以用[UIView animate:]通过简单的改变透明度来做到这一点。 @glenwayguy 你的意思是,我可以避免 UINavigationController 并只使用 segues 吗? 不,使用 UINavigationController。要移动到下一个视图控制器,请将按钮连接到下一个屏幕的 segue。如果你点击 segue 并查看它的属性,在一个选项卡下你应该能够选择自定义动画,或者类似的东西。 @glenwayguy 不,在属性检查器上,我只能更改转场类型并添加转场标识符。我想我可以在performSegue 的代码中制作这个动画,以便从“根控制器”淡出并从“第二个控制器”淡入viewDidLoad 点击“样式”并将其从推送更改为自定义 【参考方案1】:

好的,我会尽力的: 自定义动画见

是的,你用动画制作了一个自定义的 segue 类。尝试:joris.kluivers.nl/blog/2013/01/15/... 和 developer.apple.com/library/ios/#featuredarticles/... 和 cmumobileapps.com/2011/11/04/a-short-tutorial-on -custom-segues

是的,我认为视图控制器是您最好的选择。但顺便说一句,即使你使用导航控制器,你仍然使用普通的视图控制器。 UINavigationController 拥有不同的 UIView,它们在导航堆栈上前进和后退。此外,您需要查找隐藏导航控制器所需的操作。

如果您创建子视图控制器,则可以在情节提要中看到它们,但如果它们是通过编程方式创建的,则不能看到它们,除非您在它们中只有视图。 [self.navigationController popViewControllerAnimated:YES] 将以编程方式“按下后退按钮”,因此只需将自定义后退按钮链接到调用它的方法即可。

如果这不能涵盖你所有的问题,请发表评论,我会回答更多:)

【讨论】:

以上是关于iOS UINavigationController 基础知识和自定义后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

带有标签栏的 presentViewController

将 managedObjectContext 发送到 viewController 崩溃

如何正确关闭作为模式呈现的 UINavigationController?

ID:[...] 的 NSManagedObject 已失效

在 UINavigationController 中设置时图像不显示