繁体   English   中英

如何从嵌入在不同UINavigationControllers中的多个UIViewController转到一个UIViewController

[英]How do I segue to one UIViewController from multiple UIViewControllers embedded in different UINavigationControllers

在我的举重应用程序中,我有一个视图控制器,我想用于几个不同的目的。 一种是选择将保存为用户默认值的电梯类型。 另一种是选择一种电梯类型,用于按电梯类型过滤用户电梯的日志。

其中一个路径(选择默认值)从“设置”屏幕开始。 当您点击UITableViewCell转到选择提升屏幕时,视图会按预期从右向左滑动, 但是 ,它会立即从右向左再次滑动视图,导航栏将指向其自身:

在此输入图像描述

这是我的故事板布局:

在此输入图像描述

这是相关的segue代码:

// MARK: - Segues

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "goToLifts" {
            let vc = segue.destinationViewController as! LiftSelectionTableViewController
            vc.delegate = self
        } else {
            return
        }
    }

  override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
    switch indexPath.row {
    case 0: performSegueWithIdentifier("goToFormulas", sender: self)
    break
    case 1: performSegueWithIdentifier("goToLifts", sender: self)
    break
    default:
      break

    }
  }

我正在使用Swift 2.3和Xcode 8。

我已经阅读了Apple的文档,并在SO上发现了几个涉及多个vc进入一个vc的主题,但他们要么处理传递数据问题或其他事情。

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

更新

做了@vacaWama建议的更改,现在它从底部显示,没有导航栏:

在此输入图像描述

更新2:

.storyboard源代码超出了限制所以这里是GitHub上的链接:

链接到故事板文件

我怀疑你从原型单元连接你的segue,所以当你选择单元格时会触发它,第二次调用performSegueWithIdentifier时会触发它。 如果要以编程方式调用segue,请从tableViewController顶部的viewController图标中进行连接。

@vacawama,你怀疑是正确的。 视图现在以模态呈现,没有导航栏(请参阅我编辑的问题)。 在“设置”屏幕中,我希望它从右向左滑动,但是从日志屏幕我希望它从底部以模态方式呈现。 我尝试将segue连接到它嵌入的导航控制器,但这并没有什么区别。 你知道我怎么解决这个问题吗?

您需要在故事板中选择segue箭头,然后在Attributes Inspector中将segue的类型更改为Show

如果我直接使用Show segue Select a lift type ,它会从右向左推动。 如果我使用Show segue到Navigation controller ,它会以模态方式呈现。 重新连接你的segue并确保它直接进入viewController而不是Navigation controller

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM