ViewController:
homepageURL
= NSString)SettingsViewController:
homepageField
(默认值:http://google.com/
)homepageURL
ViewController.h
#import SettingsViewController.h
@interface ViewController : UIViewController <UIWebViewDelegate> {
UIWebView *webView;
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@end
ViewController.m
@synthesize webView;
- (void)viewDidLoad {
[super viewDidLoad];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:homepageURL]]];
}
SettingsViewController.h
#import "ViewController.h"
@interface SettingsViewController : UITableViewController <UITextFieldDelegate> {
UITextField *homepageField;
NSString *homepageURL;
}
@property (nonatomic, retain) IBOutlet UITextField *homepageField;
@property (nonatomic, retain) NSString *homepageURL;
SettingsViewController.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中加载? - 换句话说,充当主页。我无法使这段代码正常工作。
答案 0 :(得分: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管理持久数据,因此在您的应用启动之间会保留所有更改。
由于这是一个默认字符串,如果userDefaults中没有保存的字符串,您可以在初始viewController的viewDidLoad
中设置它。您的设置viewController可以配置为从viewDidLoad
/ viewWillAppear
上的NSUserDefaults读取数据,并在viewWillDisappear
上和/或{{1}}上写出更改。
答案 1 :(得分:1)
你可以使用NSUserDefault在SettingsViewController中保存homepageURL,然后随时在你的ViewController中获取它
设置使用
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:homepageField.text forKey:@"homepageURL"];
并获得
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *homepageURL = [defaults objectForKey:@"homepageURL"];