Цель C: использовать NSMutableArray в разных классах
Я создал два UIImageView *image1 и *image2, после того как я создал NSMutableArray *arrayImage, теперь я хочу заполнить этот массив
arrayImage = [[NSMutableArray alloc] initWithObjects: image1, image2, nil];
но я создал UIImageView и NSMutableArray в ClassA, но я хочу заполнить NSMutableArray в viewdidload в.m ClassB, затем Xcode сообщает мне, что image1 и image2 не объявлены. Я просто использовал собственность и синтезировал. Что я могу сделать?
2 ответа
Вы можете попробовать что-то вроде этого, вы должны сохранить ссылку на classB внутри classA, чтобы, когда вы хотите добавить представление в массив в classB, вы могли получить доступ к свойствам classB через свойство clasB класса A. Попробуйте что-то вроде этого.
//ClassA .h file
#import @"ClassB.h"
@interface ClassA : UIViewController {
UIImageView *view1, view2*;
ClassB *classB;
}
@end
//Inside ClassA .m file
-(void)viewDidLoad{
//construct view1 and view2 here or make the IBOutlets and link them in IB
classB = [[ClassB alloc] init];
[classB.imageArray addObject:view1];
[classB.imageArray addObject:view2];
}
//ClassB .h file
@interface ClassB : UIViewController {
NSMutableArray *imageArray;
}
@property(nonatomic, retain) NSMutableArray *imageArray;
@end
//Inside ClassB .m file
@synthesize imageArray;
-(id)init{
if (self = [super init]){
imageArray = [[NSMutableArray alloc] init];
}
return self;
}
-(void)dealloc{
[imageArray release];
[super dealloc];
}
Используйте шаблон делегирования и передайте свой класс объект в класс б, как
если ваш класс б
id a;
@property (nonatomic, assign) id a;
и синтезировать это.
теперь начните свой класс б в классе а,
b.a=self;
Вот теперь вы можете использовать в viewdidload в классе B, как
self.a.arrayImage
и изучите образец делегата в интернете, у вас будет четкое представление. удачи