更新:子類中的保留陣列
我已經創建了子類UIImageView,以使某些圖像可以通過觸摸手勢移動。在視圖控制器中,我有一個數組保存每個imageview的初始位置。 我的問題是,只要從子類調用該數組,該數組就會返回null。這個想法是檢查圖像是否在原來的位置,或者如果它已經被移動過,我已經剝離了代碼,只是NSLog發生了什麼事情,但問題依然存在,並且使我瘋狂。
ViewController.h
NSMutableArray *originalPositions;
@property (nonatomic, retain) NSMutableArray *originalPositions;
-(void)testLogging;
ViewController.m
@synthesize originalPositions;
- (void)viewDidLoad {
originalPositions = [[NSMutableArray alloc]init];
}
-(void)drawImages {
for (int i = 0; i < imagesArray.count; i++) {
CGRect frame = CGRectMake(65 * i, 10, 60, 60);
draggableView *dragImage = [[draggableView alloc] initWithFrame:frame];
NSString* imgName = [imagesArray objectAtIndex:i];
[dragImage setImage:[UIImage imageNamed:imgName]];
[dragImage setUserInteractionEnabled:YES];
[self.view addSubview:dragImage];
NSString *originalPositionAsString = NSStringFromCGPoint(dragImage.center);
[originalPositions addObject:originalPositionAsString];
}
}
-(void)testLogging {
NSLog(@"Logging array: %@", originalPositions);
}
-(IBAction)btnClicked {
[self testLogging];
}
當從類中的IBAction爲(或任何其他方式)調用時,「testLogging'法正確地NSLogs陣列但如果我從子類中調用相同的方法,則NSLogs爲null:
Subclass.m
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
ViewController *viewController = [[ViewController alloc] init];
[viewController testLogging];
}
好了,我不明白是什麼代碼是應該做的 - 'populatePositionsArray'需要先叫,但您發佈不會做這樣的片段......你可以稱之爲'populatePositionsArray'在初始化,也許 – Axel
Axel是正確的,你必須確保populatePositionsArray它被調用一次並且用類的初始化。 – rishi