从 viewController 更改 UIColor 以在 UIView 类中使用

Posted

技术标签:

【中文标题】从 viewController 更改 UIColor 以在 UIView 类中使用【英文标题】:change UIColor from viewController to be use in UIView Class 【发布时间】:2012-10-19 21:14:53 【问题描述】:

我正在尝试创建一个绘画应用程序,我看到一个带有颜色的变量并将其传递给 UIView,但我在 viewController 中有一个按钮来更改颜色,但我可以找到一种方法来传递更改UIview 的颜色:

ViewController(这个工作就好了):

paint *canvas=[[paint alloc]initWithFrame:frame];
    [self.view addSubview:canvas];
    canvas.colorSelected=colorSelected;

我有一个按钮来改变颜色选择:

(IBAction)colorSelection:(id)sender

但是因为 canvas.colorSelected 的实例是在设置 canvas.colorSelected 之后释放的,所以我如何从 IBAction 更改颜色选择,因为如果我创建另一个实例,它不会指向 colorSelected 的相同指针。我的问题是如何从 viewController 的 ibaction 中更改 colorSelected?

【问题讨论】:

【参考方案1】:

真的很难理解你在做什么 如果您想设置背景颜色,请执行以下操作:

canvas.backgroundColor = colorSelected

如果您想通过设置colorSelected 值来更改颜色 您必须覆盖 paint 类中的设置器 做这样的事情:

in Paint.m

- (void) setColorSelected:(UIColor*) color 
    _colorSelected = color;
    self.backgroundColor = color;

现在当您执行canvas.colorSelected=[UIColor redColor]; 时,您的画布将设置colorSelected 变量并同时更改背景颜色

【讨论】:

【参考方案2】:

您需要在视图控制器中创建一个实例变量来保存对 paint 对象的引用。您无需像在您发布的代码中那样使用局部变量,而是将 paint 对象分配给实例变量。然后在您的按钮处理程序中,您可以调用实例变量上的colorSelected 属性来更新视图的颜色。

【讨论】:

举个例子?添加实例变量?如果您不知道如何将实例变量添加到您的类中,那么我建议您多学习一下 Objective-C 编程语言。学习该语言的基础知识将真正有助于您的编码工作。简短的回答是将实例变量添加到 .h 文件中的 @interface 部分。那么这个变量就可以在类中的任何方法中使用了。

以上是关于从 viewController 更改 UIColor 以在 UIView 类中使用的主要内容,如果未能解决你的问题,请参考以下文章

从 Swift 中的其他类更改 ViewController 的对象

以编程方式从另一个 viewController 更改 tabBarController 索引

有没有办法从嵌入式 ViewController 更改 Tabbar 图像和操作?

从 UITableView 更改 viewController 时将可选值显示为“nil”

故事板中的子类 viewController 并以编程方式从子类更改 UI

更改 ViewController 并重新启动应用程序