1

当应用程序进入前台时,我想更改视图控制器中的标签....:

SalaryAppV4AppDelegate.h

@interface SalaryAppV4AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {

//----------------------------------------------    

    NSTimeInterval appEnteredBackground;

    NSTimeInterval appEnteredForeground;

    NSTimeInterval difference;

    NSString *times;

//-----------------------------------------------

SalaryAppV4AppDelegate.m

- (void)applicationWillEnterForeground:(UIApplication *)application

{


    //perform -(IBAction)DoThis

    FirstViewController* controller = [FirstViewController alloc];
    [controller DoThis]; 




    //releasing
    [dateFormatter release];





}

第一视图控制器.m

-(IBAction) DoThis
{

    appDelegate = [[[UIApplication sharedApplication] delegate] retain];

    //This Doesn't Work :(
    label.text = @"IT Has Worked";


    //This Works
    NSLog(@"%@", appDelegate.times);

}
//--------------------------------------------------------

我只想将 label.text ti 更改为任何内容,但 viewcontroller 中没有任何更改...

4

5 回答 5

0

首先确保标签不为零。其次,如果您的视图控制器在导航堆栈中,那么您需要从导航堆栈中获取视图控制器。

这是从导航堆栈获取 viewController 的代码片段

HomeViewController *vController = nil;
    NSArray *vControllers = [self.navigationController viewControllers];
    for(UIViewController *v in vControllers) {
        if([v isKindOfClass:[HomeViewController class]]) {
            vController = (HomeViewController*)v;
            break;
        }
    }
于 2011-06-07T16:06:01.497 回答
0

标签是否连接在 Interface Builder 中?

于 2011-06-07T16:01:49.070 回答
0

使用 App 委托中的方法和对 View Controller 的实例调用

- (void)applicationWillEnterForeground:(UIApplication *)application {
   [ViewController.label setText:@"DA TEXT"]; //if the VC is a property.
   [[ViewController instance].label setText:@"DA TEXT"]; //if is not a property

}

如果不是属性,则必须在 VC 中设置实例类方法

于 2011-06-08T01:54:21.423 回答
0

在您的applicationWillEnterForeground:方法中,您正在创建 FirstViewController 的新实例,然后在其上调用您的方法DoThis:,这确实会更改标签文本。但是,此控制器不是成员对象,您看到的未更新的它的版本可能在某个地方的另一个代码文件中 - 或者它也在您的应用程序委托中?

简而言之,尽管您确实更改了文本,但它不是正确的对象,这就是为什么您看不到任何可见更改的原因,我认为。

于 2011-06-07T19:20:26.533 回答
0
RootViewController * controller = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];

-(IBAction)这样做{

appDelegate = [[[UIApplication sharedApplication] delegate] retain];

使用 setText 将其更改为喜欢:

[label setText:@"IPhone/Ipad Chat Room"];
//This Works
NSLog(@"%@", appDelegate.times);

}

于 2011-06-07T16:50:56.780 回答