在segue之后缺少后退按钮

时间:2017-03-24 04:34:49

标签: ios swift storyboard segue

所以,在这种情况下......

  • 我有三个故事板(A,B和C)。
  • C是一个常见的故事板,A和B在某些时候都与故事板引用相对应。
  • 故事板A和B都是带有新闻文章列表的UITableView。
  • 当您点击其中一个UITableViewCells时,它将转到Storyboard C.
  • 在Storyboard C中,我希望能够回到我来自的地方(A或B)。所以,我在Storyboard C中添加了一个导航栏并添加了一个后退按钮。
  • 在Storyboard C的UINavigationItem中,我将Back Button值设置为Back。

当我构建并运行时,导航栏位于Storyboard C中,但在Storyboard C的导航栏中没有后退按钮。在Storyboard A和B中,我甚至将这些UITableView放在导航控制器中,认为包含后退吧,它首先需要来自导航控制器,但这不起作用。

当我转到UINavigationItem的outlet页面时,它就是这样的:

enter image description here

如何将后退按钮添加到Storyboard C?

仅供参考我不是那种经验丰富的iOS开发人员,所以可能会有一些我不知道的明显事情。

编辑:我使用show segue进行A - > C和B - > C segues。

3 个答案:

答案 0 :(得分:2)

您应该像这样设置您的观点:

  • 查看A(表视图)... Embed Navigation Controller适用于View A
  • 查看B(表视图)... Embed Navigation Controller适用于View B
  • 查看C(普通视图).... 为视图C嵌入导航控制器
  • view A创建Segue - > View C
  • view B创建Segue - > View C

    你可以看到,在你创建Segue到View C之后,在View C中会自动出现导航栏,因为你只需要为根视图嵌入导航控制器(在这种情况下是{{ 1}}和View A

这是将导航控制器嵌入视图控制器的方法

enter image description here

你做完之后我说。你会得到这样的故事板: enter image description here

这就是你需要设置故事板的方法。

所以现在你有2个导航分支

  1. 查看A - >查看C(根视图A)
  2. 查看B - >查看C(根是视图B)
  3. 希望它可以帮到你

答案 1 :(得分:0)

我认为当从另一个故事板回来时,您的导航栏会被隐藏。在这种情况下,您必须强制显示导航栏。在故事板C中的第一个视图控制器中。尝试以下代码:

- (void) viewWillAppear:(BOOL)animated
 {
     [self.navigationController setNavigationBarHidden:NO animated:animated];
     [super viewWillAppear:animated];
 }

<强> swift3

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.setNavigationBarHidden(false, animated: animated)
super.viewWillAppear(animated)
}

答案 2 :(得分:0)

  • 如果您正在推动ViewController&#34; C&#34;在导航堆栈上,您需要在后退按钮上弹出该控制器。

    推送

    self.navigationController?.pushViewController(ViewControllerC, animated: true)

    <强>坡平

    self.navigationController?.popViewController(animated: true)

  • 如果您正在展示ViewController&#34; C&#34;然后你需要在后退按钮上点击该控制器。

    <强>呈现

    self.presentViewController(ViewControllerC, animated:true, completion:nil)

    <强>解聘

    self.dismissViewControllerAnimated(false, completion: nil)

修改

您需要添加此代码,如

从A开始 - > C,你需要在tableview的didSelectRowAtIndexPath方法中添加它(点击单元格),如果你使用segue则忽略

self.navigationController?.pushViewController(ViewControllerC, animated: true)

从C回来时 - > A,你需要在&#34; C&#34;

中实现这样的条形按钮动作方法

在视图控制器的viewDidLoad()方法&#34; C&#34;中,以编程方式添加条形按钮

let backBtn = UIButton(type: .custom)
backBtn.setImage(UIImage(named: "imagename"), for: .normal)
backBtn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
backBtn.addTarget(self, action: #selector(ViewControllerC.back), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: backBtn) 

func back(sender: UIButton){
  self.navigationController?.popViewController(animated: true)
}

您也可以使用与View控制器B相同的方式。