1

2 つ目のビュー コントローラーを追加した単純なシングル ビュー iOS 5 アプリケーションがあります。これらを Navigation Controller 内に埋め込み、FirstViewController に 2 つのボタンを配置しました。これらの各ボタンには、iPhone アプリケーションの UI に私の SecondViewController を表示するセグエの名前付き識別子があります。

すべてが期待どおりに機能しますが、2 番目のビュー コントローラーのラベルに「ボタン 1 をクリックしました」というような単純なものを表示したいと思います。このデータを AppDelegate で宣言する NSMutableString 変数に手動で配置しようとしましたが、これは 2 番目のビュー コントローラーで到達できますが、これに割り当てた値は画面に表示されません。

どうやら、SecondViewController の新しいインスタンスが作成されているため、表示されない可能性があります。この値を保持するために myLabel という名前の UILabel タイプの IBOutlet を作成しましたが、残念ながら変更はありません。

どんな助けでも大歓迎です。

注:コードを投稿できてうれしいですが、それが私の質問に本当に役立つとは思いません。

4

4 に答える 4

2

この状況での私の解決策は、常にカスタム-initメソッドです。そのような、

-initWithButtonPressedString:(NSString*)message;

2 番目のビュー コントローラーで宣言し、次を呼び出します。

self.secondView = [[SecondViewController alloc]initWithButtonPressedString:@"some conditional string"];

次に、必要なのは、渡された文字列を処理する 2 番目のビュー コントローラーの iVar だけです。

于 2012-06-14T19:28:46.817 に答える
1

View Controller間でデータを渡すには、1.追加情報を渡すView Controllerのカスタムinitを作成するか、2.最初のView Controllerからアクセスする2番目のView Controllerにプロパティを作成することを検討する必要があります。

作成したIBOutletにプロパティを作成できますが、最初のView Controllerからアクセスする場合は、ビューがロードされた後であることを確認する必要があります。

現在のコードを見ずに、より多くの指示を与えることは困難です

于 2012-06-14T19:26:52.507 に答える
0

ストーリーボードを使用していますか? とにかく、IBOutlet を Interface Builder の変数に接続しましたか?

Storyboards を使用する場合は、というメソッドを使用してみてください。 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

すなわち。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"ChooseToDetailsSegue"]) {
        preparedSegue = segue;
        SaleDetailsViewController *saleDetailsVC = [preparedSegue destinationViewController];
        saleDetailsVC.saleDetailsProduct = [elementsArray objectAtIndex:selectedRow];
        saleDetailsVC.cardTransactionDetails = [[cardDetails alloc] init];
        saleDetailsVC.cardTransactionDetails.number = infoCardNumber;
        saleDetailsVC.cardTransactionDetails.month = infoExpiriationM;
        saleDetailsVC.cardTransactionDetails.year = infoExpiriationY;     
    }
}

新しい ViewController (宛先) を初期化し、それらの変数を参照するだけです。

于 2012-06-14T20:22:54.737 に答える