我有一个类的NSMutableArray,而在其他类中我想初始化它并添加各种对象。但问题是NSMutableArray并没有保留这些元素。我有以下代码:
-(void)viewDidLoad
{
[super viewDidLoad];
MyStops *myStops = [self.storyboard instantiateViewControllerWithIdentifier:@"My Stops"];
myStops.myStopsMArray = [[NSMutableArray alloc] init];
}
这一个:
- (void) addToFavourites:(id)sender
{
UITapGestureRecognizer *gesture = (UITapGestureRecognizer *) sender;
NSInteger tag = gesture.view.tag;
UITableViewCell *cell = [stopsTable dequeueReusableCellWithIdentifier:@"cell"];
MyStops *myStops = [self.storyboard instantiateViewControllerWithIdentifier:@"Mis Paradas"];
[myStops.myStopsMArray addObject:[stopsArray objectAtIndex:tag]];
}
在另一个文件中,我声明并合成了NSMutableArray:
//Header file
@property (nonatomic, retain) NSMutableArray *myStopsMArray;
//Implementation file
@synthesize myStopsMArray;
你能告诉我,我做错了什么吗? 谢谢!
答案 0 :(得分:1)
instantiateViewControllerWithIdentifier
每次创建并返回NEW INSTANCE!
所以你必须有一个指向该视图控制器的直接指针。
在当前类的头文件中创建一个属性:
@property (strong, nonatomic) MyStops *myStopsVC;
注意:
如果您当前的ViewController已经从strong
展示,请将weak
更改为MyStops
。但是,如果您要从此vc推送/显示MyStops,请将其保留为strong
指针。
答案 1 :(得分:0)
您有MyStops
ViewController的两个不同实例,这就是原因。
在你viewDidLoad
中,然后创建一个MyStops
ViewController
alloc
/ init
其“myStopsMArray
”NSMutableArray
。
但是在您addToFavorites
方法中,您创建了另一个不同的全新 MyStops
实例 - 您没有alloc
/ {{1你init
属性。因此,在该方法中,myStopsMArray
仍为myStops.myStopsMArray
。