2012-05-23 2 views
0

나는 이것이 매우 바보 같은 문제라고 확신합니다. UIView 하위 뷰로 UIImageView 추가하려고합니다. 내가 하위 뷰를 추가하는 시도하고 코드는 다음 코드 (A UIImageView 서브 클래스)가UIView 하위보기가 표시되지 않음

for (int i = 0; i < kBoardSize; i++) { 
    for (int j = 0; j < kBoardSize; j++) { 

     Tile *t = [[Tile alloc] initWithPosition:CGPointMake(i, j) withSize:CGSizeMake(width, height)]; 

     [self insertSubview:t atIndex:0]; 
     //[self addSubview:t]; 
     //[self bringSubviewToFront:t]; 

     [temp addObject:t]; 
    } 
} 

대응 타일은 다음과 같습니다 이제

- (id) initWithPosition:(CGPoint)position withSize:(CGSize)size 
{ 
    self = [super initWithFrame:CGRectZero]; 
    [self setFrame:CGRectMake(position.x * size.width, position.y * size.width, size.width, size.height)]; 
    self.tag = position.x * kBoardSize + position.y; 
    [self setPiece:EMPTY]; 
    if (self) { 
     [self.layer setBorderColor:[[UIColor blackColor] CGColor]]; 
     [self.layer setBorderWidth:0.5]; 
    } 
    return self; 
} 

내가

NSLog(@"%@", [[self subViews] description]); 

2012-05-22 23:20:51.740 XXXXXXX[8204:f803] (
    "<Tile: 0x6a79380; baseClass = UIImageView; frame = (0 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x6a7ad70>>", 
    "<Tile: 0x6a94180; baseClass = UIImageView; frame = (0 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x6a93e40>>", 
    "<Tile: 0x6a97da0; baseClass = UIImageView; frame = (0 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 2; layer = <CALayer: 0x6a97de0>>", 
    "<Tile: 0x6a7aeb0; baseClass = UIImageView; frame = (106.667 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 3; layer = <CALayer: 0x6a7aef0>>", 
    "<Tile: 0x6a94610; baseClass = UIImageView; frame = (106.667 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 4; layer = <CALayer: 0x6a94650>>", 
    "<Tile: 0x6a946c0; baseClass = UIImageView; frame = (106.667 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 5; layer = <CALayer: 0x6a94700>>", 
    "<Tile: 0x6a94770; baseClass = UIImageView; frame = (213.333 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 6; layer = <CALayer: 0x6a947b0>>", 
    "<Tile: 0x6a94820; baseClass = UIImageView; frame = (213.333 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 7; layer = <CALayer: 0x6a94860>>", 
    "<Tile: 0x6a948d0; baseClass = UIImageView; frame = (213.333 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 8; layer = <CALayer: 0x6a94910>>" 
) 

이 작업을 수행 할 때 하위보기가 제대로 추가되었음을 보여줍니다. 그러나 subviews 실제로보기에 나타나지 않는다. 무엇이 문제일까요?

+0

보기 자체를 계층 구조에 추가 했습니까? – borrrden

+0

기본 UIView? 예. IB를 통해 추가했습니다. –

+0

나는 해결책을 찾았다 고 생각한다. IB를 통해 추가 한 후 뷰 컨트롤러의 'viewDidLoad'에서 다시 초기화했습니다. 그리고 나서 UIView의 init 함수를 호출했습니다. 재 초기화 코드'self.gameView = [[TicTacToeView alloc] initWithFrame : CGRectMake (0, 0, 320, 320)];을 제거한 후, 이제는 잘 작동하고 있습니다! 재 초기화가 문제를 일으키는 이유는 무엇인지 혼란 스럽습니다. –

답변

1

Vashishtha Jogi, The Designated initializer을 살펴보고 어떻게 작동합니까? 중요한 점은 initSomething 메서드 중 하나가 초기화 지정자를 호출하기 때문에 적절하게 호출하는 것이 중요하다는 것입니다.

관련 문제