我在swift编写一个ios应用程序。 我有一个ViewController,它包含一个自定义表视图,它包含一个自定义单元格。每个单元格都有一个开关,激活后,我希望视图能够转换为第二个视图控制器。
我试图通过声明一个storyboard变量,并设置第二个视图控制器,并推送到第二个视图控制器来实现这一点。我在电路板上寻找解决方案,但是它们似乎都没有用。
在class customCellTableViewCell中:UITableViewCell
尝试1:
customCellTableViewCell: UITableViewCell {
var storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let view2: viewController2 = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("View2") as viewController2
switchActive fnc(){
self.window?.rootViewController?.navigationController?.pushViewController(view2, animated: true)
}
…
//rest of code
错误:customCellTableViewCell.Type没有名为storyboard的成员
尝试2:
customCellTableViewCell: UITableViewCell {
init(storyboard: UIStoryboard){
self.storyboard = storyboard
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let view2: viewController2 = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("View2") as viewController2
switchActive fnc(){
self.window?.rootViewController?.navigationController?.pushViewController(view2, animated: true)
}
…
//rest of code
错误:customCellTableViewCell.Type没有名为storyboard的成员
尝试3:
customCellTableViewCell: UITableViewCell {
var storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let view2: viewController2 = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("View2") as viewController2
switchActive fnc(){
self.window?.rootViewController?.navigationController?.pushViewController(view2, animated: true)
}
…
//rest of code
将代码放在switchActive fnc中,但不起作用。 用let代替var,但无济于事。 在这篇文章中尝试使用lazy属性的建议 How to get global pointer to view controller in swift
我无法弄清楚我做错了什么。我被困了一段时间。
答案 0 :(得分:1)
故事板非常方便segueing。 1)在你的故事板中创建2个视图控制器(我认为它已经完成)
2)在2个视图控制器之间创建一个segue(从第一个ViewController到第二个控制器按住ctrl +单击,它会问你想要的segue类型,选择“show”)。
3)为该Segue提供一个标识符(点击第4个标签中的链接和右侧面板)
4)在第一个View Controller中,当激活开关时,
self.performSegueWithIdentifier("detail", sender:nil)
将标识符“detail”替换为您选择的标识符。