如何在 ViewController 中调用所有自定义 UIView 的方法?
Posted
技术标签:
【中文标题】如何在 ViewController 中调用所有自定义 UIView 的方法?【英文标题】:How to call method of all custom UIView in a ViewController? 【发布时间】:2016-03-22 18:54:10 【问题描述】:我创建了一个自定义 UIView,里面有一个 UIButton 当我点击它时,它会简单地改变它的背景颜色。
我想知道如何在此自定义 UIView 的所有实例中更改此按钮的背景颜色。
有什么想法吗?
import UIKit
class RadioChannelView: UIView
var playButton:UIButton!
init(frame: CGRect, themeColor: UIColor)
super.init(frame: frame)
playButton = UIButton(type: .Custom)
playButton.backgroundColor = UIColor.blackColor()
playButton.layer.cornerRadius = 40
playButton.addTarget(self, action: "playButtonTapped", forControlEvents: .TouchUpInside)
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
func playButtonTapped()
self.playButton.backgroundColor = UIColor.redColor()
【问题讨论】:
您必须遍历所有子视图并更改该按钮的背景颜色。 你可以做UIButton.appearanceWhenContainedInInstancesOfClasses([RadioChannelView.self]).backgroundColor = UIColor.redColor()
【参考方案1】:
其中一种方法是将您的RadioChannelView
类作为观察者添加到NSNotificationCenter
。单击按钮时,将您的通知发布给观察者,然后它会唤醒此通知的侦听器方法,您可以在其中更改背景。
class RadioChannelView: UIView
var playButton:UIButton!
init(frame: CGRect, themeColor: UIColor)
super.init(frame: frame)
playButton = UIButton(type: .Custom)
playButton.backgroundColor = UIColor.blackColor()
playButton.layer.cornerRadius = 40
playButton.addTarget(self, action: "playButtonTapped", forControlEvents: .TouchUpInside)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didReceiveBtnClickNotification:", name: "button_clicked", object: nil)
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
func playButtonTapped()
NSNotificationCenter.defaultCenter().postNotificationName("button_clicked", object: nil);
func didReceiveBtnClickNotification(sender: NSNotification!)
self.playButton.backgroundColor = UIColor.redColor()
【讨论】:
以上是关于如何在 ViewController 中调用所有自定义 UIView 的方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GameScene 中从 ViewController 调用方法
无论如何要从 Storyboard 场景创建自定义 ViewController 类文件?
UITableView didSelectRowAt indexPath 未在自定义单元格中调用
具有相同操作的所有 viewController 的通用导航栏