0

视图控制器:

  • 初始视图控制器
  • 包含切换到 SettingsViewController 的按钮
  • 包含带有初始主页 URL 的 UIWebView(值:homepageURL= NSString)

设置视图控制器:

  • 充当应用程序的设置部分
  • 包含一个 UITextField: homepageField(默认值: http://google.com/)
  • UITextField 值:homepageURL

视图控制器.h

#import SettingsViewController.h

@interface ViewController : UIViewController <UIWebViewDelegate> {
    UIWebView *webView;
}

@property (nonatomic, retain) IBOutlet UIWebView *webView;

@end

视图控制器.m

@synthesize webView;

- (void)viewDidLoad {
    [super viewDidLoad];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:homepageURL]]];
}

设置视图控制器.h

#import "ViewController.h"

@interface SettingsViewController : UITableViewController <UITextFieldDelegate> {
    UITextField *homepageField;
    NSString *homepageURL;
}

@property (nonatomic, retain) IBOutlet UITextField *homepageField;
@property (nonatomic, retain) NSString *homepageURL;

设置视图控制器.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *homepageURL = homepageField.text;
}

错误

ViewController.m: [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:homepageURL]]];-Use of undeclared identifier 'homepageURL'

问题当应用程序加载时, 如何检索设置的 NSString 值homepageURL以在 UIWebView 中加载?- 换句话说,充当主页。我无法使此代码正常工作。

4

2 回答 2

1

您可以使用 NSUserDefault 将 homepageURL 保存在 SettingsViewController 中,然后随时在您的 ViewController 中获取它

设置使用

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:homepageField.text forKey:@"homepageURL"];

并得到

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *homepageURL = [defaults objectForKey:@"homepageURL"];
于 2013-03-26T18:23:36.367 回答
1

您需要创建一个 SettingsViewController 实例才能获取该字符串。它不是从 xib/storyboard 自动加载的,因为它不是初始/根视图控制器。如果从情节提要加载,您应该给它的场景一个情节提要 ID(比如“settingsVC”),以便您可以访问它,然后

SettingsViewController* settingsVC =  
      [self.storyboard instantiateViewControllerWithIdentifier:@"settingsVC"];

那么你也能:

      [webView loadRequest:[NSURLRequest requestWithURL:
                [NSURL URLWithString:settingsVC.homepageURL]]];

然而,这是存储默认字符串的一种非常糟糕的方式,因为您必须加载整个情节提要场景才能获得该值。有许多更好的方法来存储数据。例如,这只是一种适合的事情NSUserDefaults

    NSString* homePageURL;
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

      //reading
    homepageURL = [defaults stringForKey:@"homepageURLKey"];

      //writing
    [defaults setString:homepageURL forKey:@"homepageURLKey"];

NSUserDefaults 管理持久数据,因此任何更改都将在您的应用程序启动之间保留。

viewDidLoad由于这是一个默认字符串,如果 userDefaults 中没有保存的,您可以在初始 viewController 中设置它。您的设置 viewController 可以配置为从 / 上的 NSUserDefaults 读取它的数据,并在进行更改时和/或在viewDidLoad/viewWillAppear上写出更改viewWillDisappear

于 2013-03-26T18:13:06.520 回答