从tableViewCell按下按钮时打开一个新的VC

时间:2018-02-01 16:46:35

标签: ios swift uitableview swift3

当我按下来自特定tableViewCell的按钮时,我试图打开一个新的VC时出现问题。  贝娄是我的tableView,正在加载细胞。第0部分中的那个是带按钮的那个。

class NewConversationViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        return 1
    } else if section == 1{
        return friendList.count
    }
    return 0
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.section == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "NewGroupConversationCell") as! NewGroupConversationTableViewCell

        return cell
    } else if indexPath.section == 1 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "NewConversationCell") as! NewConversationTableViewCell
        let friendList = self.friendList[indexPath.row]
        cell.populate(friendList)

        return cell
    }
    return UITableViewCell()
}

Bellow是带有按钮和动作的单元格,它将显示我想要的特定viewController

class NewGroupConversationTableViewCell: UITableViewCell {

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

@IBAction func groupButtonPressed(_ sender: Any) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let messagesViewController = storyboard.instantiateViewController(withIdentifier: "GroupListViewController") as! GroupListViewController
    self.window?.rootViewController?.present(messagesViewController, animated: true, completion: nil)
}
  

由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [VoiceMe.GroupListViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x7fb33171c4d0'

1 个答案:

答案 0 :(得分:3)

你不能这样做,所以这些是打开VC的步骤:

1 - 在您的按钮中添加目标功能:

ng build --prod

2 - 实现你的选择器:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.section == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "NewGroupConversationCell") as! NewGroupConversationTableViewCell
        cell.youButton.addTarget(self, action:#selector(handleBtnAction(sender:)), for: .touchUpInside)
        cell.youButton.tag = indexPath.row
        return cell
    } 
    ...