更新日:サブクラスで保持する配列
私はタッチジェスチャーでいくつかの画像を移動できるようにするためにUIImageViewをサブクラス化しました。ビューコントローラには、各画像ビューの初期位置を保持する配列があります。 私の問題は、この配列がサブクラスから呼び出されるたびに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:
サブクラスm
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
ViewController *viewController = [[ViewController alloc] init];
[viewController testLogging];
}
コードが何をしているのか分かりません - まず 'populatePositionsArray'を呼び出す必要がありますが、あなたが投稿するスニペットはこれをしません。initで' populatePositionsArray'を呼び出すことができます。おそらく – Axel
Axelは正しいです、populatePositionsArrayが一度呼び出され、classの初期化が行われていることを確認する必要があります。 – rishi