2012-09-04 3 views
0

나는 레이아웃과, XIB에서
을 UIView의를 만드는 방법을 알고 있지만 지금은 사용자 정의보기 (UIView의의 서브 뷰),이 같은 다른 초기화 방법이
있습니다다른 초기화 방법으로 XIB에서 사용자 정의보기를 만들려면 어떻게해야합니까?

-(id)initWithArg1:(int) arg2:(NSString *) arg3:(NSArray *) ... 

또는

+(id)viewWithArg1:(int) arg2:(NSString *) arg3:(NSArray *) ... 

xib 속성 오른쪽 막대에서보기의 클래스를 채굴 할 때
내 맞춤 초기화 메소드가 표시되지 않습니다. 아무 것도 설정하지 않습니다.

어떻게? 매우 감사합니다.

답변

0

칼은 올바른 것입니다. 본질적으로

객체가 (당신이 질문에 언급 단계에 따라)를 XIB에서 인스턴스화되는 경우는 호출되는 initialiser는

- (id)initWithCoder:(NSCoder *)aDecoder; 

당신은 모든 가능한을 타고 과다에 의해 자신이 확인할 수있다 이니셜 라이저 (initialiser)를 호출하고 모두에게 중단 점을 두어 호출 된 것을 확인합니다.

따라서 XIB에서 초기화하는 경우 해당 개체의 인스턴스가 하나만 포함될 것이라는 힌트가 있습니다 (반드시 그런 것은 아닙니다). 그러나 사용자 지정 개체의 인스턴스가 많이 필요한 경우 사용자 지정 초기화 프로그램으로 돌아가서 프로그래밍 방식으로 모든 항목을 만들어 XIB 작업을 수행하지 않아도됩니다. 본질적으로

, 당신은 객체를 사용하려고하는 방법을 생각하십시오. 이것은 프로그래밍 방식으로 자신 만의 뷰를 생성하는 사용자 정의 이니셜 라이저에 대해 생각할 필요가 있는지를 알려줍니다.

+0

예, 나는 그것을 확인 에 의해 작동하고 그 방법을 구현 생각합니다. 내가 필요한 것은 뷰를 배치하는 것뿐입니다. 프로그래밍 할 수있는 다른 변수를 설정할 수 있습니다. 또한 UIKit의 표준 객체처럼 레이블을 텍스트, 색상 또는 다른 것으로 설정하는 등 시각적으로 설정할 수 있습니까? 감사합니다. – user1610768

+0

도움이되어 기쁩니다. 마크 업 및 수용은 항상 너무 오래갑니다 ;-) – Damo

1
initWithCoder:을 무시하고 지정된 초기화 무슨 일을 달성하기 위해 몇 가지 합리적인 기본값을 사용하는 당신은해야합니다

.

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    if (self = [super initWithCoder:aDecoder]) { 
     _value1 = 0; 
     _value2 = @"Hi!"; 
     /* and so on */ 
    } 

    return self; 
} 
0

난 당신이 다른 곳에서 방금과 같은 코드로 init 전화, XIB에서 init 방법을 설정할 필요가 없습니다 생각 :

[[yourView alloc] initWithArg1:arg1 Arg2:arg2]; 
+1

그럼 어떻게 그는 펜촉에 자신의 견해를 사용할 것인가? –

관련 문제