gpt4 book ai didi

ios - 可以从其他 ViewController 类更改 UILabel 的字体

转载 作者:行者123 更新时间:2023-11-29 01:56:01 25 4
gpt4 key购买 nike

我有一个 ViewController,它由 UILabelUIButton 组成。 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
}

编辑:我喜欢这个答案,但无法理解它在 objective-c 中的返回 update ViewController label text from different view

最佳答案

您可以使用委托(delegate)。在您的 popover Swift 文件中创建这样的协议(protocol):

protocol PopoverDelegate {
func didSelectFont(font: UIFont)
}

在您的 popover 类中创建新创建的协议(protocol)的实现:

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)
}
}

现在在您的主视图 Controller 中,如果您以编程方式呈现您的popover,您应该将您的popover 的delegate 属性设置为self。如果您要从 Storyboard 中呈现弹出窗口,只需处理 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
}

现在实现委托(delegate)方法:

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

当然,不要忘记将委托(delegate)添加到主视图 Controller 中:

class mainViewController: UIViewController, PopoverDelegate { ...

希望对您有所帮助!

关于ios - 可以从其他 ViewController 类更改 UILabel 的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com