0

以前に似たような質問をして、まず最初に多くの回答を得ましたが、プロジェクトの複雑さのために答えを理解できなかったので、今回は非常に簡単な形でもう一度質問することにしました。

ビューコントローラーAにボタンが1つあり、そのボタンをビューコントローラーBにあるラベルに書き込む必要があります.Aの単純なボタンは、Bにラベルテキストを設定します.

ユーザーがアプリを開く

ページAのボタンをクリック

2番目のページが表示され、そのページでラベルテキストがlabel.textコードによって設定され、viewcontroller Aからコードが呼び出されます

または、A から B のコードは、作成する限り重要ではないと呼ぶことができます。別のビューコントローラーを開くためのボタンを作成できるので、説明する必要はありません。

また、他の方法があれば、それらが単純である限り、私もそれらを行うことができます.たぶん、コードを別の場所で書いて、AとBから呼び出します.

客観的なCとxcodeについてほとんど知識がないため、ステムごとに説明してください。

ビューコントローラー間の接続について学ぶためにこの質問をします。実際には、2ページ目に乱数を表示するボタンを作成しますが、今のところ重要ではないため、簡単な接続を学ぶことができれば、残りのことを行うことができます。

4

2 に答える 2

0

2 番目のビュー コントローラーで、というプロパティを作成し、theTextそれNSStringを;にviewDidLoad割り当てます。label.textNSString

- (void)viewDidLoad
{
    if(self.theText)
        self.label.text = self.theText;
}

次に、最初のビュー コントローラーを使用して、2 番目のビュー コントローラーを設定theTextします。

セグエを使用している場合prepareForSegue:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"Second View Segue"])
    {
        SecondViewController *theController = segue.destinationViewController;
        theController.theText = @"Some text";
    }
}

ある種のモーダル プレゼンテーションを使用している場合:

SecondViewController *theController = [[SecondViewController alloc] init];
theController.theText = @"Some text";
[self presentModalViewController:theController animated:YES];

または、ナビゲーションコントローラーを使用している場合:

SecondViewController *theController = [[SecondViewController alloc] init];
theController.theText = @"Some text";
[self.navigationController pushViewController:theController animated:YES];

したがって、最初のView ControllerはNSString2番目にプロパティを設定し、次に2番目はロード中ににUILabel等しい値を設定しNSStringます。2 番目のビュー コントローラーが読み込まれる前に a のテキストを設定することはできないUILabelため、次のようになります。

SecondViewController *theController = [[SecondViewController alloc] init];
theController.label.text = @"Some text";
[self.navigationController pushViewController:theController animated:YES];

ビューが読み込まれるまでラベルのテキストを設定できないため、正しく機能しません。

それが役立つことを願っています。

于 2012-07-23T22:02:57.700 に答える
0

アクションでは、2 番目のビュー コントローラーへの参照が必要です。例えば

- (IBAction)buttonAClicked:(id)sender {
    ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
    [self.navigationController pushViewController:vc2 animated:YES];
    vc2.someVariable = @"This is random text";
    [vc2.someButton setTitle:@"Some button text" forControlState:UIControlStateNormal];
}

これは、2 番目のビュー コントローラーを作成し、2 つのプロパティを変更してからプッシュする方法を示しています。

于 2012-07-23T21:45:25.493 に答える