无法在UINavigationController上显示UILabel的文本

时间:2011-08-10 03:31:39

标签: objective-c xcode uinavigationcontroller uilabel

我无法在UILabel中显示NSString。下面是所示程序的一部分,当按下按钮时,将调用这些函数。

这是按下按钮时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 {

}

}

这是在Base View的View Controller的头文件和实现文件中。这与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 个答案:

答案 0 :(得分:1)

alertView:clickedButtonAtIndex:方法中,您正在创建一个新的FirstViewController对象,该对象与(可能是)导航堆栈上的对象无关。 您必须在视图控制器上调用updateCurrentLocationLabel方法,该视图控制器实际上是视图层次结构的一部分。仅仅因为你实例化同一个类并不意味着你将获得相同的对象。

答案 1 :(得分:-1)

您需要先致电[[NSUserDefaults standardUserDefaults] synchronize]。您的默认设置不会保存。