Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios segue后返回按钮丢失_Ios_Swift_Storyboard_Segue - Fatal编程技术网

Ios segue后返回按钮丢失

Ios segue后返回按钮丢失,ios,swift,storyboard,segue,Ios,Swift,Storyboard,Segue,所以,在这个场景中 我有三个故事板(A、B和C) C是一个常见的故事板,a和B在某个点上都与故事板引用相连接 故事板A和B都是带有新闻文章列表的UITableView 当您单击其中一个UITableViewCell时,它将转到情节提要C 在故事板C中,我希望能够回到我来自的地方(A或B)。因此,我在情节提要C中添加了一个导航栏,并添加了一个后退按钮 在脚本C中的UINavigationItem中,我将Back按钮值设置为Back 当我构建和运行时,导航栏在情节提要C中,但在情节提要C中的导航

所以,在这个场景中

  • 我有三个故事板(A、B和C)
  • C是一个常见的故事板,a和B在某个点上都与故事板引用相连接
  • 故事板A和B都是带有新闻文章列表的UITableView
  • 当您单击其中一个UITableViewCell时,它将转到情节提要C
  • 在故事板C中,我希望能够回到我来自的地方(A或B)。因此,我在情节提要C中添加了一个导航栏,并添加了一个后退按钮
  • 在脚本C中的UINavigationItem中,我将
    Back按钮
    值设置为Back
当我构建和运行时,导航栏在情节提要C中,但在情节提要C中的导航栏中没有后退按钮。在情节提要A和B中,我甚至将那些UITableView放在导航控制器中,认为要包含一个背栏,它必须首先来自导航控制器,但这不起作用

当我转到UINavigationItem的outlets页面时,它看起来是这样的:

如何将“后退”按钮添加到情节提要C

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


编辑:我对a-->C和B-->C两个序列都使用
显示序列

我认为从另一个情节提要返回时,导航栏会被隐藏。在这种情况下,您必须强制显示导航栏。在序列图像板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)
}

我想当你从另一个故事板回来时,你的导航栏会被隐藏起来。在这种情况下,您必须强制显示导航栏。在序列图像板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)
}
  • 如果要在导航堆栈上按ViewController“C”,则需要在点击后退按钮时弹出该控制器

    推送

    self.navigationController?.pushViewController(ViewControllerC,动画:true)

    poping

    self.navigationController?.popViewController(动画:true)

  • 如果要显示ViewController“C”,则需要在点击后退按钮时关闭该控制器

    展示

    self.presentViewController(ViewControllerC,动画:true,完成:nil)

    解雇

    self.dismissViewControllerAnimated(false,完成:nil)

编辑

您需要添加以下代码

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

self.navigationController?.pushViewController(ViewControllerC, animated: true)
当从C->A返回时,您需要在“C”中实现这样的条形按钮操作方法

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

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)
}
同样,您也可以对视图控制器B执行此操作。

  • 如果要在导航堆栈上按ViewController“C”,则需要在点击后退按钮时弹出该控制器

    推送

    self.navigationController?.pushViewController(ViewControllerC,动画:true)

    poping

    self.navigationController?.popViewController(动画:true)

  • 如果要显示ViewController“C”,则需要在点击后退按钮时关闭该控制器

    展示

    self.presentViewController(ViewControllerC,动画:true,完成:nil)

    解雇

    self.dismissViewControllerAnimated(false,完成:nil)

编辑

您需要添加以下代码

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

self.navigationController?.pushViewController(ViewControllerC, animated: true)
当从C->A返回时,您需要在“C”中实现这样的条形按钮操作方法

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

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)
}

同样,您也可以对视图控制器B执行此操作。

您应该按照以下方式设置视图:

  • 视图A(表视图)<代码>嵌入导航控制器用于查看A
  • 视图B(表视图)<代码>嵌入导航控制器用于
    视图B
  • 视图C(正常视图)嵌入视图C的导航控制器
  • 视图A
    ->
    视图C
  • 视图B
    ->
    视图C

    您可以看到,在创建Segue to
    View C
    之后,在
    View C
    中将自动出现导航栏,因为您只需要为根视图嵌入导航控制器(在本例中为
    View A
    View C

这就是如何将导航控制器嵌入到视图控制器

等你照我说的做了。你会得到这样的故事板:

这就是你需要如何设置你的故事板

现在有两个导航分支

  • 视图A->视图C(根是视图A)
  • 视图B->视图C(根是视图B)

  • 希望它能帮助您

    您应该这样设置视图:

    • 视图A(表视图)<代码>嵌入导航控制器用于查看A
    • 视图B(表视图)<代码>嵌入导航控制器用于
      视图B
    • 视图C(正常视图)嵌入视图C的导航控制器
    • 视图A
      ->
      视图C
    • 视图B
      ->
      视图C

      您可以看到,在创建Segue to
      V之后