通过NSURL并保持它

时间:2013-04-11 06:01:24

标签: objective-c webview uipickerview

我将一个NSURL从我的pickerviewcontroller传递给我的mainviewcontroller。 url取决于pickerviewcontroller中的用户选择。它工作正常,但每次重新启动应用程序以进行选择时,用户必须重复访问pickerviewcontroller。

也许代码会更好地解释问题:这是pickerviewcontrollers的相关部分......

//The save button on the pickerviewcontroller 
- (IBAction)selectedRow:(id)sender {

MainViewController *vc1 = [self.storyboard 
instantiateViewControllerWithIdentifier:@"webview"];
vc1.destinationweb =  selectedRow;
[self presentViewController:vc1 animated:YES completion:nil];

在MainViewController中,destinationweb日志显示pickerview中用户选择的地址。但是,如果我关闭应用程序或在应用程序中前进(我有另一个视图控制器)然后回到MainViewController - 它显示destinationweb = null

这是MainViewController的相关部分:

- (void)viewDidLoad {

{
    //webView.hidden = YES;
    self.webView.delegate = self;
    NSURL *url = destinationweb;
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    NSLog(@"destinationweb shows= %@", destinationweb);   
}
[super viewDidLoad];   
}

我不知道我应该做些什么来让MainViewController记住url,直到选择器中的另一行被选中?

2 个答案:

答案 0 :(得分:0)

如果要在重新启动应用程序后保留该值,则应将值(url)存储在文件中,因此当您重新启动它时,可以从那里读取它。

答案 1 :(得分:0)

只需将url字符串保存在用户默认值中,然后在视图控制器中检索url字符串

- (IBAction)selectedRow:(id)sender 
{
    MainViewController *vc1 = [self.storyboard 
    instantiateViewControllerWithIdentifier:@"webview"];
    //Instead of passing it just save the url string in user defaults
    NSString *urlString = [selectedRow absoluteString];
    [[NSUserDefaults standardUserDefaults] setObject:urlString  forKey:@"UserURL"];
    //vc1.destinationweb =  selectedRow;
    [self presentViewController:vc1 animated:YES completion:nil];
}

- (void)viewDidLoad
{
    [super viewDidLoad]; 
    //webView.hidden = YES;
    self.webView.delegate = self;
    NSString *urlString = [[NSUserDefaults standardUserDefaults] stringForKey:@"UserURL"];
    NSURL *url = [NSURL URLWithString:urlString ];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    NSLog(@"destinationweb shows= %@", destinationweb);  
}