我会尽可能清楚地说明这一点。在我的Xcode项目中,我正在重用原型单元格,我希望每个单元格打开一个不同的视图控制器。你们怎么会认为我能做到这一点?
感谢阅读!
更新
感谢阅读,希望你能给我一个解决方案!
答案 0 :(得分:1)
我认为你应该实现tableview的委托方法
e.g。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if indexPath.row == 0
{
// open VC1
}
else if indexPath.row == 1
{
// open VC2
}
else if indexPath.row == 2
{
// open VC3
}
}
答案 1 :(得分:1)
我认为这样的事情
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
// segue to view 1
case 1:
// segue to view 2
case 2:
// segue to view 3
case 3:
// segue to view 4
default:
// default go here
}
}
答案 2 :(得分:0)
您必须实施tableView(_:, didSelectRowAt:)
:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
let newViewController1 = ...
present(newViewController1, animated: true, completion: nil)
} else if indexPath.row == 1 {
let newViewController2 = ...
present(newViewController2, animated: true, completion: nil)
} else {
let newViewController3 = ...
present(newViewController3, animated: true, completion: nil)
}
}
或者,您可以向表格视图单元格添加手势识别器并实现自定义单元格委托。在你的情况下似乎没有必要,所以我不会推荐它。看起来它可能有点矫枉过正。如果你有兴趣,那么:
class NewsTableViewCell: UITableViewCell {
var delegate: NewsTableViewCellDelegate?
override func awakeFromNib() {
let recognizer = UIGestureRecognizer(target: self, action: #selector(tapped))
contentView.addGestureRecognizer(recognizer)
}
func tapped() {
delegate?.cellTapped(self)
}
}
protocol NewsTableViewCellDelegate {
func cellTapped(_ cell: NewsTableViewCell)
}
extension MyViewController: NewsTableViewCellDelegate {
func cellTapped(_ cell: NewsTableViewCell) {
if cell == cell1 { }
else if cell == cell2 { }
else if cell == cell3 { }
//You would have to manually determine how to check if a cell is cell1, cell2, or cell3, since you wouldn't have an indexPath available.
}
}
答案 3 :(得分:0)
对于错误,
从main.storyboard
移除segue,因为您使用的是来自storyboard
的segue,但在代码工作中,您展示的是ViewConroller
。
在代码工作中,请通过以下
**
`let storyboard = UIStoryboard(name: "main.Storyboard", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier:"myViewController") as! UIViewController
self.present(controller, animated: true, completion: nil)`
**
如果您要推送VC,请使用以下代码:
let myViewController = self.storyboard?.instantiateViewController(withIdentifier: "myViewController") as! Conversation_VC
self.navigationController?.pushViewController(myViewController, animated: true)