我无法将 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?的主要内容,如果未能解决你的问题,请参考以下文章