【问题标题】:Show ViewController from XIB-file-Button - Swift从 XIB 文件按钮显示 ViewController - Swift
【发布时间】:2015-05-28 02:44:24
【问题描述】:

有没有办法从 xib 文件(自定义 TableViewCell)segue 到 Main.storyboard 中的另一个 ViewController

不可能像在主故事板中那样拖动转场。

在单元格中,我有一个按钮,我想从中更改视图。 我该如何解决?

谢谢!

【问题讨论】:

  • 不是一个真正的答案,但您是否有理由使用单独的 xib 而不是界面构建器来布局单元格?

标签: swift segue xib viewcontroller tableviewcell


【解决方案1】:

您始终可以从 Storyboard 中实例化一个视图控制器,并在点击的按钮上显示它:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("ViewControllerID") as UIViewController
    self.presentViewController(vc, animated: true, completion: nil)

【讨论】:

  • 当我使用这段代码时,它说'TableViewCell.swift dies not have a member named presentViewController'。 TableViewCell.swift 是我的 XIB 文件的 swift 文件。
  • TableViewCell.swift 是 UITableViewCell 类型,在主故事板的 tableViewController 中实现
  • 您需要在您的 ViewController 中才能激活转场,因此按下 TableViewCell 的动作必须在 ViewController 中实现,而不是直接在您的视图中实现。
【解决方案2】:
  1. 在 StoryBoard 中定义一个 segue 并指定 identifier,例如 detail

  2. talbeView(_, didSelectRowAtIndexPath)中执行segue:

使用self.performSegueWithIdentifier 触发转场

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("detail", sender: nil)
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2018-06-15
    相关资源
    最近更新 更多