NSUserDefaults 未获取存储的字符串值 [英] NSUserDefaults not getting stored string value

查看:73
本文介绍了NSUserDefaults 未获取存储的字符串值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆