我有一个由UILabel
和UIButton
组成的ViewController。点击UIButton
显示popOver
tableView
,显示tableView
。 UILabel
的每个单元格代表不同的字体选项。
我想根据tableViewCell
中用户选择的字体更改UILabel
的字体。我如何实现这一点,因为我的tableView
和func 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
中的回归答案 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 { ...
希望它有所帮助!