Как изменить метку в ViewController, когда приложение выходит на передний план - PullRequest
1 голос
/ 07 июня 2011

Я хочу изменить метку в моем контроллере представления, когда приложение выходит на передний план ....:

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 на что угодно, но ничего в viewcontroller не изменится ...

Ответы [ 5 ]

0 голосов
/ 08 июня 2011

Использование метода в делегате приложения и вызов экземпляра в 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

0 голосов
/ 07 июня 2011

Внутри вашего applicationWillEnterForeground: метода вы создаете новый экземпляр FirstViewController и затем вызываете для него свой метод DoThis:, который изменяет текст метки.Однако этот контроллер не является объектом-участником, и его версия, которая, как вы видите, не обновляется, вероятно, находится где-то в другом файле кода - или она тоже есть в вашем делегате приложения?

Короче говоря, хотя вы делаетеизмените текст, это не правильный объект, поэтому я не вижу видимых изменений, я считаю.

0 голосов
/ 07 июня 2011

Сначала убедитесь, что метка не равна нулю. Во-вторых, если ваш viewcontroller находится в стеке навигации, то вам нужно получить ваш контроллер представления из стека навигации.

Вот фрагмент кода для получения viewController из стека навигации

HomeViewController *vController = nil;
    NSArray *vControllers = [self.navigationController viewControllers];
    for(UIViewController *v in vControllers) {
        if([v isKindOfClass:[HomeViewController class]]) {
            vController = (HomeViewController*)v;
            break;
        }
    }
0 голосов
/ 07 июня 2011
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);

}

0 голосов
/ 07 июня 2011

Подключен ли ярлык в Интерфейсном Разработчике?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...