【问题标题】:configure tableview cell in previous controller在前一个控制器中配置 tableview 单元格
【发布时间】:2015-05-25 04:33:20
【问题描述】:

我有一个带有 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 是 nil。那么有什么建议可以实现我的想法吗?

【问题讨论】:

    标签: ios uitableview swift


    【解决方案1】:

    给你要展示的视图控制器添加一个属性,比如:

    var textToDisplay: String?

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

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

    然后,在您推送的视图控制器的viewDidLoad 方法中,将UILabeltext 属性的值设置为您的新self.textToDisplay 值。

    希望这就是你正在考虑的那种事情吗?

    【讨论】:

    • 这个属性会强吗?或者它不会是零,在控制器将转到另一个之后?因为我尝试过这样的事情并且访问权限不正确
    • Swift 中的属性默认是强的,只有在属性中添加weak 时才会弱。这是可选的,这意味着它可以为 nil,如果属性为 nil,则应该抛出更具描述性的错误。你能用更多代码编辑你的问题吗?我认为问题出在哪里还不清楚
    • 啊,我想我明白你在做什么了。您是否尝试根据 UITextField 中的值更新标签,以便在用户输入文本时更改标签?让我感到困惑的是,您实际上并没有对您的 controller 变量做任何事情。那是什么意思?
    • 不。在我的控制器 1 中,我有图像和文本,我想将它们设置在控制器 2 中(在其 tableViewCell 中)
    • 我无法理解您所说的或您想要实现的目标。请发布更多代码,包括您的问题所在的代码,以及PreparePhotoViewController
    【解决方案2】:

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

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

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

    【讨论】:

    • 你的代码给出了异常,这是我第一次尝试这样做,我看到教程和人们正在使用这个方法(tableView.dequeueReusableCellWithIdentifier)它不是一个问题对象,所以没关系
    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多