【问题标题】:Its possible to change font of UILabel from other ViewController class可以从其他 ViewController 类更改 UILabel 的字体
【发布时间】:2015-06-15 07:05:24
【问题描述】:

我有一个由UILabelUIButton 组成的ViewController。 OnClick UIButton 一个 popOver 显示 tableViewtableView 的每个单元格代表不同的字体选项。

我想根据用户从tableViewCell 中选择的字体更改UILabel 的字体。我如何实现这一点,因为我的 UILabeltableView 在不同的 viewController 类中。

请帮助我。

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

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

中的回归

【问题讨论】:

  • 使用协议和委托或块或通知中心
  • @Mrug 你可以参考一些例子
  • 这实际上与字体无关,它与处理回调有关,您只需实现三件事中的任何一个,我更喜欢初始级别的协议和委托,它将允许您将回调给您的最初的 Viewcontroller 所以之后我想你已经知道该怎么做了,对吧?
  • @Mrug 谢谢它会帮助我

标签: ios swift uitableview uilabel uipopover


【解决方案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,您应该将弹出框的delegate 属性设置为self。如果您从情节提要中呈现弹出框,只需处理 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 { ...

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多