在课程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"];
}
}
BOOL
中的saveUserHaiku
中的mySecondViewController
显示1 /是。但viewWillAppear
中myFirstViewController
中的布尔值显示为0 /否。
我要离开的是什么?
修改
这是我最终想要完成的事情:
myFirstViewController
在GHHaiku
中实例化viewDidLoad
。然后它在该实例化上创建arrayOfHaiku
并使用x个haiku加载它。
saveUserHaiku
中的mySecondViewController
方法为该数组添加了ha句,设置了布尔justComposed' to
YES , and then programmatically switches view controllers back to
myFirstViewController。
我们回到myFirstViewController
后,如果viewWillAppear
中的justComposed
为mySecondViewController
,则YES
会调用某个函数。
两个视图控制器都是在Interface Builder中创建的。
第二次编辑:如果重要,这是一个标签式应用程序。 saveUserHaiku
更改标签。
答案 0 :(得分: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];
答案 1 :(得分:1)
为什么它有其他价值而不是NO?你有两个不同的类。在其中一个中,您将类成员的值设置为YES。然后在另一个类中,您检查具有相同名称的变量的值,但它是不同的,您从不为其分配任何内容,默认情况下它为NO