【发布时间】:2014-06-07 02:51:45
【问题描述】:
我已经在 viewcontroller.h 中声明了一个数组:
@property (nonatomic, strong) NSMutableArray *array;
在 viewcontroller.m 中,我将这段代码放在了控制器的实现中:
@synthesize array = _array;
在 viewDidLoad-method 的开头我有这个:
if (_array == nil){
NSLog(@"arr was null");
_array = [[NSMutableArray alloc] init];
}
在上面的代码之后,我以这种方式将一个对象添加到可变数组中:
[_array addObject:@"1"];
但是,当我在模拟器中从一个控制器转到另一个控制器时,_array 始终为 nil,它从头开始分配数组,所有旧值都消失了。我做错了什么?
更新: 我没有使用任何导航控制器。我使用模态推送。在 ctrl2 中,我覆盖了方法 prepareForSegue 放置了这个相关代码:
ViewController1 *ctrl1 = segue.destinationViewController;
ctrl1.anothervar = 3;
到 ctrl1 的真正“重定向”是在 ctrl2 的方法“tableView”中完成的(当用户选择一个选项时)。代码如下所示: [self performSegueWithIdentifier:@"select_game_to_ctrl1" sender:self];
ctrl1 已被赋予标识符“select_game_to_ctrl1”(通过情节提要)
【问题讨论】:
-
请提供更多信息,了解从一个控制器到另一个控制器的含义。另外,粘贴您的 viewDidLoad 方法,以便我们查看它是否有任何问题。
-
那你在做什么?
-
对不起。我删除了评论。我在情节提要中有控制器 1 和控制器 2。在 performSegueWithIdentifier 的帮助下,单击 controller1 上的按钮将我带到 ctrl2。 Ctrl1 是第一个视图。在viewDidLoad中,我第一次去这个控制器时,应该初始化数组。然后是带我到 ctrl2 的按钮。从那里我用 performSegueWithIdentifier 返回到 ctrl1。我还在 ctrl2 中使用 prepareForSegue。所以我终于回到 ctrl1 并在 viewDidLoad 中再次初始化数组。
-
等一下为什么你在回来时使用“从那里我用 performSegueWithIdentifier 回到 ctrl1” performSegueWithIdentifier,因为它已经由 iOS 管理
-
iEinstein 我不明白你的问题。在 ctrl2 中有一个带有选项的表。我需要在 ctrl2 中了解选择了哪个选项,然后使用 ctrl1 的实例在 ctrl1 中设置(另一个)变量。使用这个有错吗?我不明白。
标签: ios objective-c initialization nsmutablearray