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];





}

FirstViewController.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

メソッド内applicationWillEnterForeground:で、FirstViewController の新しいインスタンスを作成し、それに対してメソッドを呼び出しますDoThis:。これにより、ラベル テキストが変更されます。ただし、このコントローラーはメンバー オブジェクトではなく、更新されていないことがわかるバージョンは、おそらく別のコード ファイルのどこかにあるのでしょうか。それとも、アプリのデリゲートにもありますか?

要するに、テキストを変更しても、それは正しいオブジェクトではないため、目に見える変化は見られないと思います。

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

-(IBAction) DoThis {

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

これを setText のように変更します。

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

}

于 2011-06-07T16:50:56.780 に答える
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

ラベルは Interface Builder に接続されていますか?

于 2011-06-07T16:01:49.070 に答える
0

まず、ラベルが nil でないことを確認してください。次に、ViewController がナビゲーション スタックにある場合は、View Controller をナビゲーション スタックから取得する必要があります。

これは、ナビゲーション スタックから 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 に答える