Uitableview 将信息传递到自定义TableViewCell-Swift

Uitableview 将信息传递到自定义TableViewCell-Swift,uitableview,swift,delegates,datasource,tableviewcell,Uitableview,Swift,Delegates,Datasource,Tableviewcell,问题是:我尝试了许多方法将信息从第二个ViewController传递给ViewController1。在第一个ViewController1中,我有一个tableView,在这个tableView中,每个单元格将接收一个图像和一个标签。我想做的是,在SecondViewController中,我将在文本字段中写入一些内容,然后选择一些随机图像,并将其显示在ViewController1中 有人能告诉我怎么做吗?我尝试了委托、出列ReusableCell,但数据不会显示在单元格中 提前谢谢 编辑

问题是:我尝试了许多方法将信息从第二个ViewController传递给ViewController1。在第一个ViewController1中,我有一个tableView,在这个tableView中,每个单元格将接收一个图像和一个标签。我想做的是,在SecondViewController中,我将在文本字段中写入一些内容,然后选择一些随机图像,并将其显示在ViewController1中

有人能告诉我怎么做吗?我尝试了委托、出列ReusableCell,但数据不会显示在单元格中

提前谢谢

编辑

这是我的密码:

视图控制器1:

导入UIKit

类FirstViewController:UIViewController、UITableViewDelegate、UITableViewDataSource、sendDataToFVCDelegate{

@IBOutlet var tableView: UITableView!
var labelsListArray = [""]

    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func myVCDidFinish(text: String) {
    labelsListArray.append(text)
    tableView.reloadData()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return labelsListArray.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let row = indexPath.row
    let textLabel = labelsListArray[row]
    var cell = tableView.dequeueReusableCellWithIdentifier("ImageView") as? CustomCellTableViewCell
    cell!.cellLabel!.text = textLabel
    return cell!
}
}

ViewController 2:

导入UIKit

协议SendDataToFcDelegate{ func myvcdiffinish(文本:字符串) }

类SecondViewController:UIViewController{

var delegate:sendDataToFVCDelegate?
@IBOutlet var textField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func addButton(sender: AnyObject) {

    if textField == nil { return }
    let name = textField.text
    println("\(name)")

    if delegate == nil { return }
    delegate?.myVCDidFinish(name)

    if let navigation = self.navigationController {
        navigation.popViewControllerAnimated(true)
    }
}
}

TableViewCell:

导入UIKit

类CustomCellTableViewCell:UITableViewCell{

@IBOutlet var cellImage: UIImageView!
@IBOutlet var cellLabel: UILabel!



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
}
}

我做错了什么?现在,甚至行“popViewControllerAnimated”也返回到第一个视图控制器


非常感谢你的帮助

因此,自定义TableViewCell应该有自己的类(例如,
ImageTableViewCell
),它负责加载TableView时设置的图像:

@IBOutlet var titleLabel: UILabel!
@IBOutlet var imageView: UIImageView!
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("ImageView") as? ImageTableViewCell
        cell!.titleLabel!.text = textFrom2VC
        cell!.imageView.image = imageFrom2VC
        return cell!
}
在TableView中:

@IBOutlet var titleLabel: UILabel!
@IBOutlet var imageView: UIImageView!
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("ImageView") as? ImageTableViewCell
        cell!.titleLabel!.text = textFrom2VC
        cell!.imageView.image = imageFrom2VC
        return cell!
}
你必须用delegate从另一个视图中获取这些。在你拥有的第二个VC中

protocol SecondVCDelegate{
    func myVCDidFinish(controller:SecondVC, text: String, image: UIImage)
}
你打电话给谁

    var delegate:SecondVCDelegate.myVCDidFinish(self, text: "this is random text", image: (your image) )
在第一个(向第二个VCDelegate确认)中


使用委托模式是正确的。发布你的代码,这样我们就可以看到哪里出了问题。我删除了我的全部代码。你能举一些简单的例子来说明怎么做吗?也许我漏掉了一个细节什么的。我会非常棒我有一个简单的项目,做一些类似于你需要的事情:你把委托设置为可选,这使它为零,然后你只在它不是零的情况下设置它,这没有任何意义。因此,如果您删除
if delegate==nil{return}
我认为它应该可以工作……您是对的。addButton现在可以工作了,我写的内容被打印在日志中,但是字符串没有进入标签,它仍然是空的。知道为什么吗?