NSUserDefaults 未获取存储的字符串值 [英] NSUserDefaults not getting stored string value
问题描述
我有 UIWebView
用于阅读内容.之后,我使用 Viewcontroller 中的 NSUserDefaults
从字符串中的内容存储中选择一些文本.然后我检索这个字符串值并在 UITextView
中显示到 viewcontroller1.但是 UITextView
没有从视图控制器更新文本.NSUserDefaults
也没有更新文本.我使用 [self.navigationController pushViewController:viewcontroller1 animation:YES];
切换到 viewcontroller1.
I have UIWebView
for reading content. After that i select some text from content stores in string using NSUserDefaults
in Viewcontroller. Then i retrieve this string value and displays in UITextView
to viewcontroller1. But the UITextView
is not updating text from viewcontroller. The NSUserDefaults
also not getting updating text. Im using [self.navigationController pushViewController:viewcontroller1 animated:YES];
for switch to viewcontroller1.
视图控制器:
[wbCont loadHTMLString:webString baseURL:nil];
[self.view addSubview:wbCont];
NSMutableArray *items = [[[UIMenuController sharedMenuController] menuItems] mutableCopy];
if (!items) items = [[NSMutableArray alloc] init];
UIMenuItem *menuItem;
menuItem = [[UIMenuItem alloc] initWithTitle:@"BookMark" action:@selector(save:)];
[items addObject:menuItem];
[menuItem release];
menuItem = [[UIMenuItem alloc] initWithTitle:@"Note" action:@selector(note:)];
[items addObject:menuItem];
[menuItem release];
[[UIMenuController sharedMenuController] setMenuItems:items];
[items release];
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(save:))
{
return YES;
}
else if (action == @selector(note:))
{
return YES;
}
else if (action == @selector(copy:))
{
return NO;
}
return [super canPerformAction:action withSender:sender];
}
-(void)save:(id)sender{
NSString *selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
NSLog(@"selection is %@",selection);
NSUserDefaults *userData1 = [NSUserDefaults standardUserDefaults];
[userData1 setObject:selection forKey:@"preferenceName"];
[userData1 synchronize];
[self.navigationController pushViewController:note animated:YES];
}
视图控制器1:
textView = [[UITextView alloc]initWithFrame:CGRectMake(0,0,320,400)];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// getting an NSString
NSString *savedValue = [prefs stringForKey:@"preferenceName"];
NSLog(@"saved is %@", savedValue);
textView.text = [NSString stringWithFormat:@"%@", savedValue];
推荐答案
textView 的分配在 viewDidLoad
中.
Allocation of textView is in viewDidLoad
.
textView 的更新在 viewWillAppear
中.
Updating of textView is in viewWillAppear
.
-(void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// getting an NSString
NSString *savedValue = [prefs stringForKey:@"preferenceName"];
NSLog(@"saved is %@", savedValue);
textView.text = [NSString stringWithFormat:@"%@", savedValue];
}
这篇关于NSUserDefaults 未获取存储的字符串值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!