2012-05-09 4 views
0

단추를 클릭 할 때 초기화되는 UIView 제거하려고합니다. 버튼을 두 번 클릭 했으므로 같은 UIView 중 두 개가 나타납니다. 첫 번째 문제는 제거 할 수 있지만 두 번째 동일한 뷰를 사용하여 동일한 작업을 수행하려고하면 아무 일도 일어나지 않습니까? 나는 이것이 그것이 그것이 그것의 제거 된 생각으로이 있음을 등록하지 않습니다 중복 때문에 여기에 ... 내 코드입니다 도표 :두 개의 같은 UIView removefromsuperview 오류

나는 그것을 만들 때의 버튼 기능입니다
- (void)createStamp13 { 
    //--EDIT--// 
    stampV13Array = [[NSMutableArray alloc] initWithCapacity:3]; 
    [stampV13Array addObject:stampV13]; 

    stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)]; 
    //[firstPage addSubview:stampV13]; 
    [firstPage addSubview:(UIView*)[stampV13Array objectAtIndex:0]; 
    //--// 
    stampV13.backgroundColor = [UIColor clearColor]; 
    stampThirteen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"exclaim_r.png"]]; 
    stampThirteen.frame = CGRectMake(0, 0, 172, 330); 
    [stampV13 addSubview:stampThirteen]; 
} 

. 다음은 제거 함수입니다.

나는 설명하는 것이 도움이되기를 바랍니다. 어떤 도움을 주시면 감사하겠습니다! 감사.

답변

0

stampV13은 단일 변수이며 한 번에 하나의 개체 만 가리킬 수 있습니다. createStamp13을 두 번 호출하면 변수는 가리키는 첫 번째 객체의 트랙을 잃어 버렸습니다. 이러한 뷰를 여러 개 복사하려면 참조 변수를 하나의 변수 대신 배열에 유지하고 모든 배열 요소에 필요한 모든 작업을 수행하십시오.

일부 추가 정보 :

  • @property (strong, nonatomic) NSMutableArray *stampV13Array;로 .H 파일에 속성을 추가하고 합성.
  • createStamp13 코드가 포함 된 클래스에 대해 '초기화 ...'메소드 내에서 stampV13Array을 초기화하십시오. (어떤 정확한 방법은 해당 클래스의 개체를 만드는 방법에 따라 달라집니다.)
  • createStamp13 메서드의 첫 번째 줄을 UIView *stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)];으로 변경하십시오.
  • 메서드 끝에 배열을 추가하여 뷰를 배열에 넣습니다 ([self.stampV13Array addObject:stampV13];).

그런 다음 stampV13을 사용할 때마다 배열 구성원을 참조해야합니다.

+0

나를 옳은 길에 태워 주신 것에 대해 감사드립니다. – Ollie177

+0

나는 당신이 말한 것을 시도하기 위해 몇 가지 방법을 시도했지만 NSArray/NSMutableArray에 익숙하지 않았습니다. 당신이 의미하는 바를 예를 들어 줄 수 있는지 궁금합니다. 그래서 거기에서 일할 수 있을까요? – Ollie177

+0

나는 그것이 어떻게 작동하는지 상상해 보았다. 문제가 계속되면 정확히 무엇인지 알게되고 내가 더 잘 설명 할 수 있는지 알게 될 것입니다. –

관련 문제