Невозможно отобразить текст UILabel на UINavigationController - PullRequest
0 голосов
/ 10 августа 2011

Я не могу отобразить строку NSString в UILabel.Ниже приведена часть показанной программы, когда при нажатии кнопки эти функции будут вызваны.

Эта функция будет вызываться UIAlert при нажатии кнопки.Он находится во втором виде контроллера навигации."location" - это строка NSString.

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

if (buttonIndex == 0)
{       
    NSString *newString = [[NSString alloc] initWithString:location];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:newString forKey:@"keyForLocation"];

    FirstViewController *newObject = [[FirstViewController alloc] init];
    [newObject updateCurrentLocationLabel:nil];
}
else {

}

}

Это находится в заголовочном файле и файле реализации контроллера представления базового представления.Который с UILabel.

Заголовочный файл

@interface FirstViewController : UIViewController {
    IBOutlet UILabel *currentLocationLabel;
}

@property (nonatomic, retain) UILabel *currentLocationLabel;
-(IBAction) updateCurrentLocationLabel:(id) sender;

Файл реализации

- (IBAction) updateCurrentLocationLabel:(id) sender {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *myString1 = [prefs stringForKey:@"keyForLocation"];
    currentLocationLabel.text = [NSString stringWithFormat:@"%@", myString1];
}

Ответы [ 2 ]

1 голос
/ 10 августа 2011

В методе alertView:clickedButtonAtIndex: вы создаете новый объект FirstViewController, который не имеет ничего общего с тем, который (предположительно) находится в вашем стеке навигации. Вы должны вызвать метод updateCurrentLocationLabel на контроллере представления, который фактически является частью вашей иерархии представления. Тот факт, что вы создаете один и тот же класс, не означает, что вы получите тот же объект.

0 голосов
/ 10 августа 2011

Вам нужно сначала позвонить [[NSUserDefaults standardUserDefaults] synchronize]. Ваши значения по умолчанию не сохранены.

...