.
你好,
我想清理我的 viewDidLoad 方法,因为它的代码行数越来越多,而且越来越乱。
现在我的 UI 是以编程方式构建的,因为我想学习这种做事方式。
所以我读了这个SO Post我可以在单独的 -9void) 方法中设置 UI 项,然后使用 [self method]
现在当我使用那种方式时,它似乎对我不起作用。
例如,如果我想设置背景颜色,这将起作用:
- (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/