2

初歩的な質問: 特定の文字列を生成し、それを別のビュー コントローラーのテキスト ウィンドウに表示するプログラムを作成しています。コードが実際に NSLog コマンドを使用して文字列を生成することを確認するためにテストを行っており、コードが意図したとおりに機能していることを確認しています。何らかの理由でView Controllerを介して転送されず、その理由がわかりません。何か助けはありますか?コードのスニペットを次に示します。

CreateStoryViewController.m

 - (IBAction)makeStory:(id)sender 
    {
    StoryLine *myStory =[[StoryLine alloc] init];

    [myStory setStory];
        self.story = myStory.plot;
        NSLog(@"story is %@", self.story);//this is generating the correct story string


    self.displayStoryController = [[BIDDisplayStoryViewController alloc] initWithNibName:@"DisplayStoryView" bundle:nil];

    [self.view insertSubview:self.displayStoryController.view atIndex:1];



    }

DisplayStoryViewController.m

    - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    BIDCreateStoryViewController *newStory = [[BIDCreateStoryViewController alloc] init];
    NSLog(@"newStory.story is %@",newStory.story);//this generates null message
    self.storyDisplay.text = newStory.story;

}
4

3 に答える 3

3

これは間違っています。2 番目のビュー コントローラー内で新しいBIDCreateViewControllerオブジェクトをインスタンス化しています。BIDCreateViewControllerこれは、2 番目の をプッシュした元のオブジェクトと同じではありませんBIDDisplayStoryViewController

BIDDisplayStoryViewControllerのヘッダー ファイルで文字列プロパティを宣言する必要があります。

何かのようなもの

@property (nonatomic, retain /*or strong, if using ARC*/) NSString *storyToDisplay;

これも必ず実装ファイルで合成してください。

最初のビュー コントローラー内に BIDDisplayStoryViewController を作成するときは、次のようにする必要があります。

self.displayStoryController = [[BIDDisplayStoryViewController alloc] initWithNibName:@"DisplayStoryView" bundle:nil];
self.displayStoryViewController.storyToDisplay = self.story;

2 番目のビュー コントローラー内で、 を使用してこれにアクセスできますself.myStory

これで問題は解決しますが (ここで失礼なことを言うつもりはないことを理解してください)、iOS (および一般的な OOP) の仕組みについての理解が不足しているように感じます。

于 2013-07-11T21:41:01.643 に答える
1

viewDidLoad メソッドでは、まったく新しいストーリーを作成しています。このストーリーは、makeStory: メソッドで作成したストーリーとはまったく異なります。DisplayStoryViewController.h に StoryLine プロパティを追加し、displayStoryController を初期化した後に設定する必要があります。

于 2013-07-11T21:41:53.467 に答える
0

目的の変数を.hファイルのプロパティタイプにして、他のファイルがアクセスできるようにします

于 2013-07-11T22:32:12.180 に答える