0

メイン ビュー コントローラーと「設定」ビュー コントローラーがあります。Preferences View Controller に「保存」ボタンがあります。これIBActionは、メインの ViewController.m ファイルにあります。

設定を に保存した後NSUserDefaults、IBAction はメイン ビュー コントローラに戻ります。

ここでの最後のアクションはUITextField、メイン ビュー コントローラー ウィンドウのいずれかを「クリア」することです。

問題は、そのメイン ビュー コントローラーを簡単に参照する方法がわかりません。

VisualBasic では、次のようになります。 Window1.finalTextField.text = "";

その「Window1」を見つけることと同等のobj-cは何ですか? ViewController のサブクラスを試してみましたが、メイン ビュー コントローラーではなく、他のWindows でのみ機能するようです。

コードの最後の行が機能していません: self.finalTextField.text = @"";

- (IBAction)savePrefButton:(id)sender
    {
    int yPref = prefYsegmentedControl.selectedSegmentIndex;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setInteger:yPref forKey:@"yPref"];
    [defaults synchronize];

    NSLog(@"Data saved");

    [self.navigationController popViewControllerAnimated:YES];

    self.finalTextField.text = @"";
}
4

1 に答える 1

0

finalTextFieldメイン ビュー コントローラーで IBOulet として定義されている場合は、名前だけでそのビュー コントローラー内からアクセスできます。

[finalTextField setText:@""];

もちろん、変数を IB のテキスト フィールドにリンクしてください。

メイン ビュー コントローラーにアクセスする場合finalTextFieldは、設定ビュー コントローラーから、1) メイン ビュー コントローラーにプロパティを作成してその変数を公開し、2) メイン ビューの設定ビュー コントローラーへの参照を渡す必要があります。コントローラ。

たとえば、プロパティ ビュー コントローラー .h の場合:

MainViewController *mainViewController;

@property (nonatomic, weak) MainViewController *mainViewController;

次に、プロパティ ビュー コントローラー .m で:

[self.mainViewController.finalTextField setText:@""];

次に、(メイン ビュー コントローラーで) セグエをプッシュするときは、必ず参照を元に戻してください。

prepareForSegue では:

if([segue.identifier isEqualToString:@"XXXX"])
{    
    PropertyViewController *propertyViewController = segue.destinationViewController;
    propertyViewController.mainViewController = self;
}

注: PropertyViewController と MainViewController を、プロパティ ビュー コントローラーとメイン ビュー コントローラーのクラス名に変更します。

于 2013-02-10T23:41:10.163 に答える