我无法将 TableViewCell 按钮连接到 TableViewController!如何将 TableViewCell 中的值连接到 TableViewController?

Posted

技术标签:

【中文标题】我无法将 TableViewCell 按钮连接到 TableViewController!如何将 TableViewCell 中的值连接到 TableViewController?【英文标题】:I can't connect TableViewCell button to TableViewController! How do I connect values from TableViewCell to TableViewController? 【发布时间】:2015-12-08 07:01:18 【问题描述】:

据我了解,我无法使用插座连接将单元格中的按钮连接到 TableViewController。 我可以使用操作连接将单元格中的按钮连接到我的 TableView。这是我的大问题的根源。

在我的单元格中,我有一个 textview、一个带有重叠按钮的 imageView 和一个发送按钮。 这就是细胞

我使用 imagePicker 将图像分配给 imageView。 imagePicker 必须从 tableViewController 打开(不能在单元格中打开)。

var MyImage = UIImage?()
var MyName = String()
var MyStatus = String()

// This is ImgButton that overlays the imageView
@IBAction func MyImageButtonAction(sender: AnyObject) 

// Select Image
    let imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    imagePicker.allowsEditing = false
    self.presentViewController(imagePicker, animated: true, completion: nil)


func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) 
// The image chosen by the user is now called MyImage
     MyImage = image
     self.dismissViewControllerAnimated(true, completion: nil)


现在,当点击发送按钮时,我将 MyImage 设为 Parse.com 的 PFFile 并将其发送到数据库。我不需要在这里提供完整的细节。这部分工作正常。

问题是我不知道如何正确地将单元格连接到 tableViewController,以便将值从一个传输到另一个。我想从单元格中获取 textView.text 到 tableViewController 以便从那里我可以将它与图像一起发送到数据库。另一个问题是,尽管用户可以选择图像并将其发送到数据库,他们无法将所选图像放入他们的 imageView

这是我尝试将单元格连接到 tableViewController:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyStatusTableViewCell", forIndexPath: indexPath) as! MyStatusTableViewCell

    cell.MyName.text = MyName

    return cell

我希望他的代码意味着 MyName 现在是包含用户在单元格中的 textView.text 中输入的 .text 的变量。我尝试将 MyName 发送到数据库,但它是空的。

如何将 tableViewCell 中的 textView.text 获取到我的数据库中?

【问题讨论】:

我也尝试过使用一个发送按钮来执行两个功能:将图像从 ViewController 发送到数据库并将 .text 从单元格发送到数据库,但它不会让我这样做 【参考方案1】:

你可以设置 UITableViewCell 的每个元素的标签,然后你可以像在 cellForRowAtIndexPath 中访问它

if let textfield = cell.viewWithTag(21) as? UITextField 
    textfield.text = MyName

【讨论】:

我实现了你的代码。 MyName 仍然不等于单元格中的用户文本输入。【参考方案2】:

您可以创建 IBAction 而不是 IBOutlet,并且在按钮操作中您可以将发件人转换为位置并找到这样的索引路径

 @IBAction func buttonClick(sender: AnyObject) 
    let btnPos: CGPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
    let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(btnPos)!

    print("indexPath->\(indexPath.row)")

【讨论】:

【参考方案3】:

我发现了您的 UITableView cellForRowAtIndexPath 方法内部的问题。您必须像下面这样加载您的自定义单元格:-

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    var cell = tableView.dequeueReusableCellWithIdentifier("MyStatusTableViewCell", forIndexPath: indexPath) as! MyStatusTableViewCell
if cell == nil

//Here you have to load your custom cells like that below
let array = NSBundle.mainBundle().loadNibNamed("MyStatusTableViewCell", owner: nil, options: nil)
cell = array[0] as?  MyStatusTableViewCell

cell.MyName.text = "MyName" //Now it will set your textview value
return cell

【讨论】:

以上是关于我无法将 TableViewCell 按钮连接到 TableViewController!如何将 TableViewCell 中的值连接到 TableViewController?的主要内容,如果未能解决你的问题,请参考以下文章

将 tableviewcell 连接到多个视图控制器

无法将按钮连接到文件的所有者

Xcode 问题 - 无法将按钮连接到对象

网点无法连接到重复内容 UIImageView 错误?

从 tableViewCell 类中获取 indexPath [重复]

无法将动作 cancelAction: 连接到 NSViewController 类的目标