可以从其他 ViewController class 更改 UILabel 的字体
Its possible to change font of UILabel from other ViewController class
我有一个 ViewController,它由 UILabel
和 UIButton
组成。 OnClick UIButton
显示 popOver
显示 tableView
。 tableView
的每个单元格代表不同的字体选项。
我想根据用户从 tableViewCell
中选择的字体更改 UILabel
的字体。我如何实现这一点,因为我的 UILabel
和 tableView
处于不同的 viewController class.
请帮助我。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var row = indexPath.row
// How to update label from here
}
Edit :我喜欢这个答案,但无法理解 objective c update ViewController label text from different view
中的 return
您可以使用委托。在您的 popover
Swift 文件中创建这样的协议:
protocol PopoverDelegate {
func didSelectFont(font: UIFont)
}
在您的 popover
class 中创建新创建协议的此类实现:
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
和 UIButton
组成。 OnClick UIButton
显示 popOver
显示 tableView
。 tableView
的每个单元格代表不同的字体选项。
我想根据用户从 tableViewCell
中选择的字体更改 UILabel
的字体。我如何实现这一点,因为我的 UILabel
和 tableView
处于不同的 viewController class.
请帮助我。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var row = indexPath.row
// How to update label from here
}
Edit :我喜欢这个答案,但无法理解 objective c update ViewController label text from different view
中的 return您可以使用委托。在您的 popover
Swift 文件中创建这样的协议:
protocol PopoverDelegate {
func didSelectFont(font: UIFont)
}
在您的 popover
class 中创建新创建协议的此类实现:
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 { ...
希望对您有所帮助!