0

ViewController:

  • 初期ビューコントローラ
  • SettingsViewControllerに切り替えるボタンが含まれています
  • 初期ホームページURL(値:homepageURL= NSString)を持つUIWebViewが含まれています

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'

質問homepageURLアプリのロード時にUIWebViewにロードするため に設定されたNSString値を取得するにはどうすればよいですか?-つまり、ホームページとして機能します。このコードを機能させることができません。

4

2 に答える 2

1

文字列を取得するには、SettingsViewControllerのインスタンスを作成する必要があります。初期/ルートビューコントローラではないため、xib/ストーリーボードから自動的にロードされません。ストーリーボードからロードする場合は、そのシーンにストーリーボード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は、viewDidLoad/のNSUserDefaultsからデータを読み込み、viewWillAppear変更が加えられたときやに変更を書き出すように構成できますviewWillDisappear

于 2013-03-26T18:13:06.520 に答える
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 に答える