0

在课堂上GHHaikuBOOL有财产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/是saveUserHaiku。但是 in中mySecondViewController的布尔值显示 0/no。viewWillAppearmyFirstViewController

我遗漏了什么?

编辑:

这就是我最终要完成的事情:

myFirstViewController中实例GHHaikuviewDidLoad。然后它arrayOfHaiku在那个实例上创建并用 x 个俳句加载它。

saveUserHaiku中的方法mySecondViewController向该数组添加一个俳句,设置一个布尔值justComposed' toYES , and then programmatically switches view controllers back tomyFirstViewController`。

一旦我们回到 in myFirstViewControllerviewWillAppear调用某个函数 if justComposedin mySecondViewControlleris YES

两个视图控制器都是在 Interface Builder 中创建的。

第二次编辑: 如果重要,这是一个选项卡式应用程序。 saveUserHaiku更改选项卡。

4

2 回答 2

2

看来您正在创建单独的 ghhaiku 实例 - 您的两个视图控制器中的每一个都有一个。如果您想在两个视图控制器之间使用相同的 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 之外的其他值?你有两个不同的课程。在其中一个中,您将类成员的值设置为 YES。然后在另一个类中检查具有相同名称的变量的值,但它不同,并且您从不为其分配任何内容,默认情况下为 NO

于 2012-12-07T17:26:26.997 回答