在先前的控制器中配置tableview单元

时间:2015-03-21 22:56:33

标签: ios uitableview swift

我有一个带有imageview,uitextview和按钮的控制器1。单击按钮时,会显示一个操作以向控制器显示表视图。我需要在表视图中配置这个图像视图和uitextview.text,但我不明白怎么做?

我试图访问

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    var header = tableView.dequeueReusableCellWithIdentifier("customHeader") as CustomHeaderCell
    var controller = PreparePhotoViewController()
    header.headerLabel.text = controller.textView.text//exc BAD ACCESS - textView is an outlet of controller, it is weak
    header.headerPhoto.image = UIImage(named: "heart.png")

    return header
}

但它有错误的ACCESS exc,因为我认为具有弱属性的uitextview是零。那么我有什么建议可以做我的想法吗?

2 个答案:

答案 0 :(得分:1)

将属性添加到您要显示的视图控制器,例如:

var textToDisplay: String?

然后,在推送此新视图之前,请设置该属性,例如:

let viewController = [...]
viewController.textToDisplay = "Hello World"
self.presentViewController(viewController, animated: true, completion: nil)

然后,在推送的视图控制器的viewDidLoad方法中,将UILabel的{​​{1}}属性的值设置为新的text值。

希望这是你想到的那种事情?

答案 1 :(得分:0)

我不确定您的方法,但我可以在您发布的代码中看到问题。您使用了错误的出队功能。 将tableView.dequeueReusableCellWithIdentifier更改为tableView.dequeueReusableHeaderFooterViewWithIdentifier()

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    var header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("customHeader") as CustomHeaderCell
    ...
    return header
}

您可能希望使用更准确的名称CustomHeaderView,而不是CustomHeaderCell