从集合视图单元格内的按钮按下实例化故事板

Posted

技术标签:

【中文标题】从集合视图单元格内的按钮按下实例化故事板【英文标题】:instantiate a storyboard from a button press inside a collection view cell 【发布时间】:2018-12-13 21:39:45 【问题描述】:

我正在尝试通过在集合视图单元格内按下按钮来实例化情节提要,但遇到了错误:

class sampleCell: UICollectionViewCell 

    @IBAction func infoButtonPressed(_ sender: Any) 

        let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController//error: Use of undeclared type "InputViewController"

        present(vc, animated: false)//error:Use of unresolved identifier 'present'
    

知道怎么做吗?

【问题讨论】:

【参考方案1】:

1- 你没有一个名为InputViewController的类

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController 

2- 你不能在单元格中展示 vc,你需要一个委托

present(vc, animated: false) 

仅用于您可以替换的主故事板的注释

UIStoryboard(name: "Main", bundle: nil)

with (但是在一个vc里面也是)

self.storyboard

编辑: -------------------------------------------------- -------------------

细胞内

class sampleCell: UICollectionViewCell 
  weak var delegate:CurrentController?

然后在cellForItemAt里面

let cell = /////
cell.delegate = self

添加到vc

func goToInput() 

    let vc = self.storyboard!.instantiateViewController(withIdentifier: "InputViewController") as! InputViewController//error: Use of undeclared type "InputViewController" 
    present(vc, animated: false) 


在单元格内部操作之后

@IBAction func infoButtonPressed(_ sender: Any) 
  delegate?.goToInput()

【讨论】:

【参考方案2】:

您正面临错误,因为 present(_:animated:completion:) 是 UIViewController 实例方法,而不是 UITableViewCell。

因此,您应该找到一种方法来处理包含表格视图的视图控制器中的按钮操作,而不是尝试从单元类中呈现视图控制器。

考虑到您将遵循以下答案:https://***.com/a/28895402/5501940

您可以在按钮选择器方法中调用 present 方法:

@objc func buttonTapped(sender: UIButton) 
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController
    present(vc, animated: false)

另外,请确保您有一个 InputViewController 视图控制器。

【讨论】:

以上是关于从集合视图单元格内的按钮按下实例化故事板的主要内容,如果未能解决你的问题,请参考以下文章

访问故事板中 UITableViewController 中定义的原型单元,以便在代码中实例化该类

'故事板“ Main”中的标识符为“”的实例化视图控制器,但尝试以模态方式显示视图控制器时未获得UITableView']

如何使用给定的根视图控制器和初始视图控制器实例化情节提要?

如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?

运行时错误消息:loadView 使用来自故事板 Main 的标识符 ViewController 实例化视图控制器,但没有获得 TableView

单元测试初始化​​故事板