可以从其他 ViewController 类更改 UILabel 的字体
Posted
技术标签:
【中文标题】可以从其他 ViewController 类更改 UILabel 的字体【英文标题】:Its possible to change font of UILabel from other ViewController class 【发布时间】:2015-06-15 07:05:24 【问题描述】:我有一个由UILabel
和UIButton
组成的ViewController。 OnClick UIButton
一个 popOver
显示 tableView
。 tableView
的每个单元格代表不同的字体选项。
我想根据用户从tableViewCell
中选择的字体更改UILabel
的字体。我如何实现这一点,因为我的 UILabel
和 tableView
在不同的 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 你可以参考一些例子 看看这个code.tutsplus.com/tutorials/…和这个codewithchris.com/learn-swift-from-objective-c-part3 这实际上与字体无关,它与处理回调有关,您只需实现三件事中的任何一个,我更喜欢初始级别的协议和委托,它将允许您将回调给您的最初的 Viewcontroller 所以之后我想你已经知道该怎么做了,对吧? @Mrug 谢谢它会帮助我 【参考方案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 ...
希望对你有帮助!
【讨论】:
以上是关于可以从其他 ViewController 类更改 UILabel 的字体的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量从 ViewController 类传递给其他结构?
有没有办法从嵌入式 ViewController 更改 Tabbar 图像和操作?