我无法在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];
}
答案 0 :(得分:1)
在alertView:clickedButtonAtIndex:
方法中,您正在创建一个新的FirstViewController
对象,该对象与(可能是)导航堆栈上的对象无关。
您必须在视图控制器上调用updateCurrentLocationLabel
方法,该视图控制器实际上是视图层次结构的一部分。仅仅因为你实例化同一个类并不意味着你将获得相同的对象。
答案 1 :(得分:-1)
您需要先致电[[NSUserDefaults standardUserDefaults] synchronize]
。您的默认设置不会保存。