0

我将 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,直到选择器视图中的另一行被选中?

4

2 回答 2

0

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

于 2013-04-11T06:23:14.077 回答
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);  
}
于 2013-04-11T06:32:21.457 回答