如何从第2个UIViewController返回第一个UIViewController

zoujiatong12 2014-10-22 02:02:39
有2个UIViewController,从第一个可以跳到第二个,在第2个UIViewController中,我想设置一个返回按钮,就类似导航的效果,是拖一个UINavigationItem到第2个UIViewController的界面上就可以了吗?怎么设置呢?

另外,我感觉先得拖一个UINavigationBar,再在UINavigationBar上拖UINavigationItem,对吧?
...全文
254 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
引用 10 楼 zoujiatong12 的回复:
引用 9 楼 zhanglei5415 的回复:
[quote=引用 8 楼 zoujiatong12 的回复:] [quote=引用 7 楼 zhanglei5415 的回复:] [quote=引用 3 楼 zoujiatong12 的回复:] [quote=引用 1 楼 zhanglei5415 的回复:] 由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
前提是你的A控制器必须是在导航控制器栈中。也就是说A控制器要么是导航控制器的根控制器rootController ,要么就是导航控制器中viewcontrollers中的一员。 看提示你的A好像不是UINavigationController吧。如果不是在storyboard中,将当前控制器embed in uinavigationcontroller 或者使用代码 UINavigationController *navA = [[UINavigationController alloc] initWithRootViewController:a];[/quote] A ,B两个 vc 都是在 storyboard中,这下似乎就没有办法了吧,是否能够通过拖navigation item来实现呢? [/quote] 看来要手把手了。 按我的操作来,在storyboard上点击A控制器,选择菜单上的“Editor” ,在展开的下拉菜单中选择“Embed In” 后面有子菜单展开,点击“Navigation Controller ” 这样在storyboard中就将你的A控制器embed in navigationcontroller 中了,其实就是将A设置为了导航控制器的根控制器rootController[/quote] 多谢,真厉害,确实可以了,但是这样操作以后,A的界面顶端多出了一个白色的空的条条,能够去掉它吗?(embed之前,A没有这个白色bar一样的东西的)[/quote]去掉了,可以代码控制隐藏的
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
引用 9 楼 zhanglei5415 的回复:
引用 8 楼 zoujiatong12 的回复:
[quote=引用 7 楼 zhanglei5415 的回复:] [quote=引用 3 楼 zoujiatong12 的回复:] [quote=引用 1 楼 zhanglei5415 的回复:] 由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
前提是你的A控制器必须是在导航控制器栈中。也就是说A控制器要么是导航控制器的根控制器rootController ,要么就是导航控制器中viewcontrollers中的一员。 看提示你的A好像不是UINavigationController吧。如果不是在storyboard中,将当前控制器embed in uinavigationcontroller 或者使用代码 UINavigationController *navA = [[UINavigationController alloc] initWithRootViewController:a];[/quote] A ,B两个 vc 都是在 storyboard中,这下似乎就没有办法了吧,是否能够通过拖navigation item来实现呢? [/quote] 看来要手把手了。 按我的操作来,在storyboard上点击A控制器,选择菜单上的“Editor” ,在展开的下拉菜单中选择“Embed In” 后面有子菜单展开,点击“Navigation Controller ” 这样在storyboard中就将你的A控制器embed in navigationcontroller 中了,其实就是将A设置为了导航控制器的根控制器rootController[/quote] 多谢,真厉害,确实可以了,但是这样操作以后,A的界面顶端多出了一个白色的空的条条,能够去掉它吗?(embed之前,A没有这个白色bar一样的东西的)
ReyZhang 2014-10-22
  • 打赏
  • 举报
回复
引用 8 楼 zoujiatong12 的回复:
引用 7 楼 zhanglei5415 的回复:
[quote=引用 3 楼 zoujiatong12 的回复:] [quote=引用 1 楼 zhanglei5415 的回复:] 由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
前提是你的A控制器必须是在导航控制器栈中。也就是说A控制器要么是导航控制器的根控制器rootController ,要么就是导航控制器中viewcontrollers中的一员。 看提示你的A好像不是UINavigationController吧。如果不是在storyboard中,将当前控制器embed in uinavigationcontroller 或者使用代码 UINavigationController *navA = [[UINavigationController alloc] initWithRootViewController:a];[/quote] A ,B两个 vc 都是在 storyboard中,这下似乎就没有办法了吧,是否能够通过拖navigation item来实现呢? [/quote] 看来要手把手了。 按我的操作来,在storyboard上点击A控制器,选择菜单上的“Editor” ,在展开的下拉菜单中选择“Embed In” 后面有子菜单展开,点击“Navigation Controller ” 这样在storyboard中就将你的A控制器embed in navigationcontroller 中了,其实就是将A设置为了导航控制器的根控制器rootController
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
引用 7 楼 zhanglei5415 的回复:
引用 3 楼 zoujiatong12 的回复:
[quote=引用 1 楼 zhanglei5415 的回复:] 由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
前提是你的A控制器必须是在导航控制器栈中。也就是说A控制器要么是导航控制器的根控制器rootController ,要么就是导航控制器中viewcontrollers中的一员。 看提示你的A好像不是UINavigationController吧。如果不是在storyboard中,将当前控制器embed in uinavigationcontroller 或者使用代码 UINavigationController *navA = [[UINavigationController alloc] initWithRootViewController:a];[/quote] A ,B两个 vc 都是在 storyboard中,这下似乎就没有办法了吧,是否能够通过拖navigation item来实现呢?
ReyZhang 2014-10-22
  • 打赏
  • 举报
回复
引用 3 楼 zoujiatong12 的回复:
引用 1 楼 zhanglei5415 的回复:
由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
前提是你的A控制器必须是在导航控制器栈中。也就是说A控制器要么是导航控制器的根控制器rootController ,要么就是导航控制器中viewcontrollers中的一员。 看提示你的A好像不是UINavigationController吧。如果不是在storyboard中,将当前控制器embed in uinavigationcontroller 或者使用代码 UINavigationController *navA = [[UINavigationController alloc] initWithRootViewController:a];
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
引用 2 楼 rollrock1987 的回复:
要看你 第二个 vc是怎么放到第一个里面的 如果是用导航的 那就是 push进去的,那就用pop返回
我这2个都是UIViewController类型的,怎么放进去好呢?是不是只能presentViewController啊,我现在只知道这一种方法,如果用这种方法,那个返回如何做呢?
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
还是得拖UINavigationItem?
zoujiatong12 2014-10-22
  • 打赏
  • 举报
回复
引用 1 楼 zhanglei5415 的回复:
由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法
提示:Couldn't find a navigation controller for segue "...", push segues can only be used when the source controller is managed by an instance of UINavigationController"
rollrock1987 2014-10-22
  • 打赏
  • 举报
回复
要看你 第二个 vc是怎么放到第一个里面的 如果是用导航的 那就是 push进去的,那就用pop返回
ReyZhang 2014-10-22
  • 打赏
  • 举报
回复
由A控制器 push到B控制器, 在B上会自动出现一个 < Back 回退按钮。如果这个回退按钮不符合你的要求,你可以在B 上 用leftBarButtonItem 来模拟,但需要自己实现回退的方法

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧