2014-11-29 3 views
0

저는 UITableView가 스토리 보드입니다. 그 같은 jQuery과 그것을 XIB에있는 UITableViewCell을 작성하고 등록하려고 :동일한 xib에서 다른 UIView를로드하여 하위보기로 추가합니다.

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    UINib *nib = [UINib nibWithNibName:@"FlipperTableViewCell" bundle:nil]; 
    [self.tableView registerNib:nib forCellReuseIdentifier:@"fliperCell"]; 
} 

그것은 완벽하게 작동합니다.

그러나이 셀은 첫 번째보기의 단추를 눌렀을 때 하나의보기를 안에 넣고 다른보기로 가져와야합니다.

동일한 xib에서 다른 두 개의보기를 만듭니다. 파일의 소유자는 FliperTableViewCell 클래스입니다. 첫 번째보기의 클래스는 FliperTableViewCell입니다. enter image description here

그러나 지금은 테이블보기에서로드 첫 번째보기 (있는 UITableViewCell)의 서브 뷰와 같은 두 번째보기 (UIView의)를 추가하는 방법을 알아낼 수 없습니다. loadNibNamed :에서 두 번째 뷰를 가져 오려고했지만 무한 사이클이되었습니다.

@implementation FlipperTableViewCell 
-(id)initWithCoder:(NSCoder *)aDecoder{ 
    if (self = [super initWithCoder:aDecoder]){ 
     [self addSubview:[[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self.class) owner:self options:nil] objectAtIndex:1]]; 
    } 
    return self; 
} 

첫 번째보기를로드 할 때 동일한 xib에서 두 번째보기를 가져 와서 하위보기로 추가하는 다른 방법은 무엇입니까?

+0

가 여러 뷰를 생성 해봤 교체 할 때 해결되었다 xib에서 그들을 연결하는거야? 그것은로드 될 때 당신을 위해 그들을 만들고 연결시켜야합니다. –

+0

나는 내 질문을 편집하고 xib 이미지를 추가했습니다. tableView가 FlipTableViewCell 클래스의 인스턴스를 생성 할 때,이 인스턴스에서 두 번째 뷰에 대한 액세스 권한을 얻고 싶습니다. 제 첫 번째 사례에서이 두 번째 견해를 얻는 법을 알지 못하는 문제입니다. –

+0

"face"및 "View"*를 * flipperCell에 넣고 숨 깁니다. 그런 다음 런타임에 단추를 눌렀을 때보고 싶은 단추를 숨김 해제합니다. 이 방법을 사용하면 모든 것이 이미 xib에 연결되어 있으므로로드하는 데 아무 것도 할 필요가 없습니다. –

답변

0

문제는 다음 코드에서 시작하는 FlipperTableViewCell을 XIB에서 첫 번째보기를 제거하고 다시

[self.tableview registerNib:nib forCellReuseIdentifier:@"FlipperTableViewCell"]; 

[self.tableview registerClass:[FlipperTableViewCell class] forCellReuseIdentifier:@"FlipperTableViewCell"]; 

에 내가

#import "FlipperTableViewCell.h" 

@interface TableViewCell() 
@property (nonatomic, strong) UIView *firstView; 
@property (nonatomic, strong) UIView *secondView; 
@end 

@implementation FlipperTableViewCell 
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ 
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]){ 
     NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self.class) owner:self options:nil]; 
     self.firstView = nibObjects[0]; 
     self.secondView = nibObjects[1]; 
     [self.contentView addSubview:self.firstView]; 
     self.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    return self; 
} 

// this is for test changing views 
- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
    if (self.contentView.subviews[0] == self.firstView){ 
     [self.firstView removeFromSuperview]; 
     [self.contentView addSubview:self.secondView]; 
    } 
    else{ 
     [self.secondView removeFromSuperview]; 
     [self.contentView addSubview:self.firstView]; 
    } 
} 

@end 
관련 문제