可以从其他ViewController类

时间:2015-06-15 07:05:24

标签: ios swift uitableview uilabel uipopover

我有一个由UILabelUIButton组成的ViewController。点击UIButton显示popOver tableView,显示tableViewUILabel的每个单元格代表不同的字体选项。

我想根据tableViewCell中用户选择的字体更改UILabel的字体。我如何实现这一点,因为我的tableViewfunc tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var row = indexPath.row // How to update label from here } 位于不同的viewController类中。

请帮帮我。

sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");

修改:我喜欢这个答案,但无法理解它在目标c update ViewController label text from different view

中的回归

1 个答案:

答案 0 :(得分:1)

您可以使用委托。在您的popover Swift文件中创建此类协议:

protocol PopoverDelegate {
    func didSelectFont(font: UIFont)
}

popover类中创建新创建的协议的实现:

class popoverviewcontroller : UITableViewController {
    var delegate: PopoverDelegate?

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
       var row = indexPath.row
       // How to update label from here
       delegate.didSelectFont(youFontHere)
    }
}

现在,在主视图控制器中,如果以编程方式显示popover,则应将popover的delegate属性设置为self。如果你要从故事板中呈现popover,只需处理segue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    let destination = segue.destinationViewController as! popoverviewcontroller
    destination.delegate = self
}

现在实现委托方法:

func didSelectFont(font: UIFont) {
    //Update label's font
}

当然,不要忘记将代理添加到主视图控制器:

class mainViewController: UIViewController, PopoverDelegate { ...

希望它有所帮助!