0

クラスGHHaikuには、BOOLプロパティがありますjustComposed

私にはmySecondViewControllerClass次の方法があります:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (!self.ghhaiku)
    {
        self.ghhaiku = [[GHHaiku alloc] init];
    }
    //Lots of other code
}

-(void)saveUserHaiku
{
    //Lots of code
    self.ghhaiku.justComposed=YES;
    NSLog(@"%d",self.ghhaiku.justComposed);
    [self.tabBarController setSelectedIndex:0]; //This switches to `myFirstViewController`
}

私にはmyFirstViewController次の方法があります:

-(void)viewDidLoad
{
[super viewDidLoad];
    if (!self.ghhaiku)
    {
        self.ghhaiku = [[GHHaiku alloc] init];
    }
}

- (void) viewWillAppear:(BOOL)animated
{
    NSLog(@"%d",self.ghhaiku.justComposed);
    if (self.ghhaiku.justComposedYes==YES)
    {
        [super viewWillAppear:animated];
        self.displayHaikuTextView.text = [[self.ghhaiku.arrayOfHaiku lastObject] valueForKey:@"quote"];
    }
}

BOOLinは1/yessaveUserHaikuを示しています。mySecondViewControllerしかし、のブール値は0/noviewWillAppearを示しています。myFirstViewController

私は何を省略していますか?

編集:

これは私が最終的に達成しようとしていることです:

myFirstViewControllerでインスタンス化GHHaikuviewDidLoadます。次にarrayOfHaiku、そのインスタンス化を作成し、x個の俳句をロードします。

のメソッドsaveUserHaikumySecondViewController、その配列に俳句を追加し、ブール値YESmyFirstViewController`を設定しjustComposed' toます, and then programmatically switches view controllers back to

に戻ったら、inが。の場合は特定の関数myFirstViewControllerを呼び出します。viewWillAppearjustComposedmySecondViewControllerYES

両方のViewControllerはInterfaceBuilderで作成されました。

2番目の編集: 重要な場合、これはタブ付きのアプリケーションです。 saveUserHaikuタブを変更します。

4

2 に答える 2

2

ghhaiku の個別のインスタンスを作成しているようです - 2 つのビュー コントローラのそれぞれに 1 つです。両方のビュー コントローラ間で同じ ghhaiku オブジェクトを使用したい場合 (したがって、justComposed ブール値を記憶している場合)、ビュー コントローラを作成するときに ghhaiku プロパティを既存のオブジェクトに設定する必要があります。viewDidLoad で新しいものを割り当てたり初期化したりしないでください。

たとえば、myFirstViewController から mySecondViewControllerClass を表示する場合、次のようになります。

mySecondViewControllerClass *secondViewController = [[mySecondViewControllerClass alloc] initWithNibName:nil bundle:nil];
secondViewController.ghhaiku = self.ghhaiku; // pass the ghhaiku object to the other view controller
[self presentModalViewController:secondViewController animated:YES];
于 2012-12-07T17:30:58.173 に答える
1

なぜNO以外の値を持つ必要があるのですか? 2 つの異なるクラスがあります。そのうちの 1 つで、クラス メンバーの値を YES に設定します。そして、別のクラスで同じ名前の変数の値をチェックしますが、それは異なり、何も割り当てません。デフォルトでは NO です

于 2012-12-07T17:26:26.997 に答える