ViewController:
初始视图控制器
包含按钮以切换到SettingsViewController
包含具有初始主页URL的UIWebView(值:homepageURL
= NSString)
SettingsViewController:
充当应用程序的“设置”部分
包含UITextField:homepageField
(默认值:http://google.com/
)
UITextField值: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中? -换句话说,充当主页。我无法使此代码正常工作。 最佳答案
您需要创建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
上写出更改。关于iphone - 在ViewDidLoad之前,在 View 之间传递NSString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15643811/