1)当你说'代码不运行'你的意思是?也就是说,如果你把NSLogs放在applicationDidBecomeActive中:并且在setLabel中它是否显示代码正在运行?
2)我会怀疑代码正在运行。但是你的代码不会“在那个时候在任何视图控制器打开时显示计数器”。您的代码会创建一个新视图(视图1),但该视图不会显示。它不作为子视图添加到任何东西。你的代码也会泄漏。您创建了一个W1G1对象,但它永远不会被释放,并且会丢弃对它的任何引用。
为了实现你想要的,你可以在应用程序的窗口中添加一个子视图。根据您的应用程序代理是如何设置的,像下面应该做的伎俩:
counter++;
W1G1 *viewController1 = [[W1G1 alloc] initWithNibName:@"W1G1" bundle:nil];
[viewController1 setlabel: counter];
[[self window] addSubview: [viewController1 view]]
// you'll want to save a reference to the viewController somehow so you can release it at a later date
在W1G1
然后
- (void) setlabel: (int) counter;
{
NSString *string = [NSString stringWithFormat:@"%d", counter];
vocabword.text = string;
}
有,当然,很多其他的方法,你可以迈出这问题。而且您需要一些策略来移除您在某个阶段添加的W1G1视图,否则您只会添加更多视图。
更新:你问(在评论中)如何跟踪你的viewController整个应用程序的生命周期...一种方法是跟踪它在你的appDelegate中。在头部碰到这样的:
@class W1G1;
@interface MyAppDelegate : : NSObject <UIApplicationDelegate>
{
// other decelerations
int counter;
W1G1 * _myW1G1
}
@property (nonatomic, retain) W1G1* theW1G1
在.m文件包括
@synthesize theW1G1 = _myW1G1;
大概在应用中:didFinishLaunchingWithOptions:创建的viewController,设置属性引用它,并添加其视图视图层次结构。
W1G1* theViewController = [[W1G! alloc] initWithNibName: @"W1G1" bundle: nil];
[[self window] addSubview: [theViewController view]];
[self setTheW1G1: theViewController];
[theViewController release];
然后,当你想从应用程序的委托使用[自theW1G1],例如再次访问的viewController
[[self W1G1] setlabel: counter];
什么是 “不跑” 呢?你有错误吗? – jtbandes
标签不变。我通过调试器运行它,并且代码块正在工作,计数器和字符串根据需要进行更新,但标签不会更改。但是,当我从我的viewController检查计数器的值时,它显示更新的值。但标签根本没有更新。 – Prajoth
如果W1G1是UIViewController子类或UIView子类。如果前者,变量名称view1是一个不寻常的选择。您发布的内容不清楚您的标签如何添加到视图层次结构中。根本没有在视图层次结构中更新的标签? – Obliquely