Цель 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 

и изучите образец делегата в интернете, у вас будет четкое представление. удачи

Другие вопросы по тегам