2010-04-10 7 views
1

NSMutableArray를 UIImageViews로로드하려고합니다. 그것으로 모든 것이 잘 될 것입니다.NSMutableArray withObject (UIImageView *)

불행히도, 나는 그들이 가변 배열에있을 때 개체를 사용하는 방법을 모른다.

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
NSMutableArray *array = [NSMutableArray new]; 
[array loadWithObject:(UIImageView *)imageView]; 
[imageView release]; 

는 그 종류의 내가 무슨 짓을했는지 설정 : 여기

몇 가지 코드입니다. 다음은 내가 원하는 작업입니다.

[array objectAtIndex:5].center = GCRectMake(0, 0); 

하지만 작동하지 않습니다. 어떻게해야합니까 ??

답변

3

좋아, 내가 가진 문제에 대해 설명하겠습니다.

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
NSArray *array = [NSArray arrayWithObject:imageView]; 
[imageView release]; 
[[array objectAtIndex:0] setCenter:CGPointMake(0.0,0.0)]; 

첫째, 어떤 방법 -[NSMutableArray loadWithObject:] 없다 : 당신이하려고하는 일을 할 수있는 방법은 다음과 같다. 마찬가지로, 예를 들어, 가변 배열이 실제로 필요하지 않습니다. 변경할 수있는 객체가 있지만, 일반적으로 변경할 수없는 객체를 사용하려고합니다. 그렇기 때문에 나는 NSArray을 사용했습니다.

다음으로 개체를 배열에 추가 할 때 개체를 입력 할 필요가 없습니다. 귀하의 예가 효과가 없었던 몇 가지 이유가 있습니다.

  1. 배열의 여섯 번째 (처음부터) 개체에 액세스하고있었습니다. 해당 색인에 UIImageView의 인스턴스가 있었습니까?

  2. getter 및 setter의 점 표기법은 컴파일러에서 메시지를 보내려는 객체의 유형을 알고있는 경우에만 작동합니다. 배열에서 나오는 객체의 유형이 컴파일 타임에 명확하지 않기 때문에 점 표기법을 사용할 수 없습니다. 대신 구식의 Objective-C 메소드 - 구문 전송 ("대괄호 및 콜론")을 사용하십시오. 따라서 접두사 CG하지 GC입니다 :

  3. 마지막으로, 코어 그래픽하지 고어 Craphics입니다. 또한 -[UIImageView setCenter:]CGRect이 아니라 CGPoint입니다. 따라서 원하는 기능은 CGPointMake입니다.

행운을 빈다. 이것이 몇 가지를 정리하는 데 도움이되는지 알려주십시오.

+0

감사합니다. GC 및 RectMake 오타를 유감스럽게 생각합니다. 이미 제 코드에있는 사람들이있었습니다. 방금 한 일을 요약하려고했습니다. 내가 필요한 것은 setCenter : 것입니다. 훌륭하게 작동합니다. 다시 한번 감사드립니다. – androidnotgenius

+0

오케이, 새로운 질문입니다. 점 표기법을 사용하지 않고 UIImageView 프레임의 높이/너비를 어떻게 얻을 수 있습니까? – androidnotgenius

+0

Ooops, 여기 혼란스러운 부분이 있습니다 : Objective-C 객체의 도트 표기법은 명확하게 형식화 된 객체에서만 작동하지만, 일반 C 구조체의 도트 표기법은 언제나처럼 작동합니다. 'CGRect'는 구조체이므로, 다음과 같이 해보십시오 :'CGFloat height = [(UIImageView *) [arr objectAtIndex : 5] frame] .size.height;'. –

3

NSMutableArray을 참조해야한다고 생각합니다.

그러나 NSMutableArray에 대한 개요 만 제공합니다.

  • = NSMutableArray를 다음 단계 (NS)는 변경 가능한 배열로 변형 필요할 때 가능 수단
  • 변경 가능한 배열.
  • 이제이 가변 배열은 모든 종류의 객체를 포함 할 수 있습니다.
  • 문자열을 배열에 저장한다고 가정합니다. 나는 다음 진술을 쓸 것이다.여기 [anArray addObject:@"Samir"];

    • [anArray addObject:@"pureman"];
      NSMutableArray *anArray=[[NSMutableArray alloc] init];
      [anArray addObject:@"Sagar"];

  • , 난 당신이 귀하의 요구 사항에 imageViews을 저장해야합니다 것을 발견했다.

NSMutableArray *anArray=[[NSMutableArray alloc] init];
UIImageView *imgV1=[[UIImageView alloc] initWithFrame:CGRectMake(10,50,60,70)];
UIImageView *imgV2=[[UIImageView alloc] initWithFrame:CGRectMake(10,110,60,70)];
UIImageView *imgV3=[[UIImageView alloc] initWithFrame:CGRectMake(10,170,60,70)];
UIImageView *imgV4=[[UIImageView alloc] initWithFrame:CGRectMake(10,210,60,70)];
[anArray addObject:imgV1];
[anArray addObject:imgV2];
[anArray addObject:imgV3];
[anArray addObject:imgV4];

  • 이제 ImageViews가 array에 추가되면 imageviews에 배열이 보유 개수로 유지됩니다.

[imgV1 release];
[imgV2 release];
[imgV3 release];
[imgV4 release];

  • 코드,
  • 당신이 배열에서 이미지 중 하나를 사용 NSMutableArray를

  • 에 이미지를 추가 할 것보다도 그냥이 일을 적어
    UIImageView *x=[anArray objectAtIndex:0];

  • 희망 위의 설명이 도움이됩니다.

  • 이해가되지 않는 경우 설명을 추가하십시오.
+0

나는 이것이 매우 도움이되는 것을 알았다. 감사 – androidnotgenius