ios - 想要清理我的 viewDidLoad 方法

标签 ios uicolor viewdidload

.

你好,

我想清理我的 viewDidLoad 方法,因为它的代码行数越来越多,而且越来越乱。

现在我的 UI 是以编程方式构建的,因为我想学习这种做事方式。

所以我读了这个SO Post我可以在单独的 -9void) 方法中设置 UI 项,然后使用 [self method]

链接到该 void

现在当我使用那种方式时,它似乎对我不起作用。

例如,如果我想设置背景颜色,这将起作用:

- (void)viewDidLoad
 {
[super viewDidLoad];

self.view.backgroundColor = [UIColor colorWithRed:0.0 green:0.2 blue:0.38 alpha:1.0];
}

但这不是:

- (void)viewDidLoad
{
[super viewDidLoad];

[self backgroundColor];


// Do any additional setup after loading the view.
}

-(void)backgroundColor
{
UIView *backgroundView = [[UIView alloc] init]; 

backgroundView.backgroundColor = [UIColor colorWithRed:0.0 green:0.2 blue:0.38  alpha:1.0];
}

我是不是误会了??

提前致谢:-)

最佳答案

我认为您误解了 View / View Controller 的性质。

在这一行中:

self.view.backgroundColor = [UIColor colorWithRed:0.0 green:0.2 blue:0.38 alpha:1.0];

self 指的是您正在加载的 View Controller ,view 指的是该 View Controller 拥有的 View 。因此,当您设置 self.view.backgroundColor 时,您正在为将由您显示的 View Controller 呈现的 View 设置背景颜色。因此,这是可行的。

另一方面,您的其他方法不会这样做:

UIView *backgroundView = [[UIView alloc] init]; 

该行创建了一个全新的 UIView 实例,并设置了它的背景颜色。这是一个全新的 View ,与之前 self.view 引用的 View 不同。

如果你真的想要一个单独的函数来为你改变背景颜色,这样写:

-(void) setBackgroundColor
{
   self.view.backgroundColor = [UIColor colorWithRed:0.0 green:0.2 blue:0.38 alpha:1.0];
}

那么您实际上是在修改属于 View Controller 的 View ,并且应该实际显示更改。


我还建议这个功能不是很有用;您正在创建一个函数,该函数封装了永远不会更改的单行代码。为此创建一个函数真的没有多大意义。一个更有用的实现可能是:

-(void) setBackgroundColor:(UIColor)newColor
{
   self.view.backgroundColor = newColor;
}

要使用此方法,您需要在 viewDidLoad 方法中编写以下行:

[self setBackgroundColor:[UIColor colorWithRed:0.0 green:0.2 blue:0.38 alpha:1.0]];

然后您可以随时再次调用 setBackgroundColor,将背景颜色更改为不同的值。

关于ios - 想要清理我的 viewDidLoad 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747206/

相关文章:

ios - UIColor patternImage 在 iOS 7 中不起作用

android - 初创公司首先要使用 iOS 或 Android 应用程序

ios - Twitter "status update"网址在 iOS 上不起作用

ios - 这些动画使用了哪些技术?

iphone - iOS Root View Controller 的 viewDidAppear : called while splash screen (Default. png) 仍然在屏幕上

objective-c - -initWithContentsOfFile : for an NSMutableArray

iOS presentViewController 不调用 viewDidLoad

iOS 崩溃报告服务

ios - 使用 iOS 类别创建新的颜色

ios - 检测 UIColor 是否使用 colorWithPatternImage 创建