2012-01-19 7 views
0

IB에서 만든 사용자 지정 UITableViewCell이 있습니다. enter image description here속성을 사용하여 객체 클래스를 결정할 수 있습니까?

내 모든 셀에는이 일반 레이아웃이 있습니다. 그러나 일부 셀에서는 두 개의 흰색보기가 classA가되고 다른 셀에서는 두 개의 흰색보기가 classB가됩니다. (UIView의 두 하위 클래스). 속성을 사용하여 두 뷰의 특정 하위 클래스를 할당하려고했습니다. 그래서

는 난 테이블 뷰를 만들어
@property (nonatomic, retain) IBOutlet UIView *leftView; 
@property (nonatomic, retain) IBOutlet UIView *rightView; 

그리고 내보기 제어기

는 I 형의 subclassA의 객체를 생성하고 leftView으로 할당하는 시도 셀의 속성으로 두보기 설정 leftView subclassA 형입니다. 다른 셀에서는 하위 클래스 B의 객체를 만들어 왼쪽 뷰에 설정하므로 해당 셀에서 왼쪽 뷰는 하위 클래스 b가됩니다.

//equationTextField is a subclass of UIView 
EquationTextField *textField = [[EquationTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; // arbitrary frame 
cell.leftView = textField; 

그러나이 코드는 작동하지 않습니다. 내보기의 특정 클래스를 할당하는 더 좋은 방법이 있습니까?

+0

당신의 문제가 무엇인지 분명하지 않다 - 당신의 UIView로 왼쪽 볼과 오른쪽 볼을 정의하는 행복하지? – jrturton

+0

나는 두 개의 하위 클래스 인 UIViews, subclassA와 subclassB를 가지고있다. 테이블의 일부 셀에서 두 개의 뷰는 subclassA 여야합니다. 다른 셀에서는 뷰가 서브 클래스 B가되어야합니다. IB에서 뷰를 만들었으므로 코드에서이 뷰를 참조해야하므로 두 하위 클래스를 모두 해당 속성에 할당 할 수 있으므로 UIView 유형의 속성을 만들었습니다. 왼쪽 뷰를 하위 클래스 A 또는 하위 클래스 B로 할 것인지 여부를 선언 할 방법이 필요합니다. – Mahir

+0

질문이 잘못 이해되지 않는 한 문제가되지 않습니다. cellForRow 메소드에서 설정을 수행하고 인덱스 경로에 따라 사용해야하는 클래스를 사용하십시오. – sosborn

답변

0

잘하고 있지만 성능을 향상시키기 위해 두 가지 다른 셀 유형 (사용자 정의보기가 이미 포함되어 있음)을 조사하는 것이 좋습니다. 각 셀에는 색인 경로에 따라 선택할 수있는 다른 재사용 식별자가있을 수 있습니다 . cellForRowAtIndexPath에서 매번 뷰를 만드는 것은 결코 좋은 생각이 아닙니다.

동일한 셀에서 두 유형을 모두 파생시킬 수도 있습니다. 다른 재사용 식별자를 사용하고 처음으로 셀을 만들 때만 올바른 하위 클래스를 추가하면됩니다.

0

당신은 필요한 경우 cell.leftView이 EquationTextField 있는지 확인할 수 있습니다

if([cell.leftView isKindOfClass:[EquationTextField class]]) { 
    NSLog(@"View is EquationTextField"); 
} 
else { 
    NSLog(@"View is not EquationTextField"); 
} 
+0

p.s. 객체 인스턴스를 캐스팅해야 할 수도 있습니다. cell.leftView = (UIView *) textField; –

관련 문제