我已经看到很多这方面的答案,但由于某种原因它不适合我。 我在文件A中有一个属性,然后在文件B中我将变量设置为文件A上的viewdidappear上的某个值a /根据分配给变量的内容运行一些代码。
因此。这是我的代码。 (最小) 的 ViewController.H
@property(strong, nonatomic) NSString *option;
ViewController.M
-(void)viewDidAppear:(BOOL)animated
{
NSLog(@"Has apeparsed");
if ([_option isEqualToString:@"1"]) {
[_map removeAnnotation:budAnno];
}
}
ViewControllerB.h
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[recipes objectAtIndex:indexPath.row] isEqualToString:@"TEST"])
{
ViewController *viewO =[[ViewController alloc]init];
viewO.option=@"1";
}
}
当在ViewControllerB中调用此代码时,选项设置为1.但是当我单击BACK to viewContoller.M时,我的if语句失败,因为它返回nil。 我想知道为什么这样做。
答案 0 :(得分:3)
问题是您在视图控制器A的新实例上设置选项为1,而不是原始实例。这是一个新实例,因为你正在做alloc / init。
当您返回时,您将返回到视图控制器A的ORIGINAL实例。您尚未更改其选项值。