我已经开始了一个新的iOS“Empty Application
” - 模板项目。当我将此代码放在application:didFinishLaunchingWithOptions:
方法中时,它可以正常工作:
CGRect frame = CGRectMake(10, 10, 300, 25);
UILabel *helloLabel = [UILabel new];
[helloLabel setFrame:frame];
helloLabel.text = @"Hello iPhone!";
[self.window addSubview:helloLabel];
但我真正想做的是在另一个类中创建一个“addHello”类方法,以便application:didFinishLaunchingWithOptions:
中显示的内容只是:
[MyOtherClass addHello];
这是我尝试过的其他课程:
+ (void) addHello {
CGRect frame = CGRectMake(10, 10, 300, 25);
UILabel *helloLabel = [UILabel new];
[helloLabel setFrame:frame];
helloLabel.text = @"Hello iPhone!";
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:helloLabel];
}
但这不起作用。我该怎么办?
答案 0 :(得分:1)
我的猜测是[[UIApplication sharedApplication] keyWindow]在你的代码中返回nil,因为你在UIWindow的makeKeyAndVisible方法调用了 not 之前调用了你的addHello方法。我想知道这是否有效:
在你的appDidFinishLaunching方法中:
[MyOtherClass addHelloWithWindow:self.window];
然后是你的MyOtherClass
+ (void) addHelloWithWindow:(UIWindow *)window
{
CGRect frame = CGRectMake(10, 10, 300, 25);
UILabel *helloLabel = [UILabel new];
[helloLabel setFrame:frame];
helloLabel.text = @"Hello iPhone!";
[window addSubview:helloLabel];
}