2009-08-18 5 views
3

nib 파일의 두 위치에서 사용하는 사용자 정의 UITableViewController 하위 클래스가 있습니다. 두 인스턴스가 약간 다른 동작을하도록하려면 어떻게해야합니까? 물론 코드에서 BOOL의 값에 따라 하나의 동작 또는 다른 하나를 선택할 수 있지만 Interface Builder 플러그인을 작성하지 않고 Interface Builder에서 해당 BOOL을 설정하는 방법은 무엇입니까?Interface Builder를 통해 사용자 정의 객체의 속성 설정

+0

왜 코드에서 수행 할 수 없습니까? iPhone 용 IB 사용에 신경 쓰지 않아도 iPhone 앱용 UI가 단순하지 않습니다. – mk12

답변

0

두 개의 하위 클래스를 사용하는 것이 더 쉽고 문서화하기 쉽습니다.

2

내가 아는 한, IB 플러그인을 작성하지 않고 IB에서 매개 변수를 설정할 수 없습니다.

즉, 두 가지 옵션이 있습니다. 그것은 하나의 BOOL만큼 간단 경우

, 당신은 그것에게 MyCustomViewController 클래스의 속성을 해제 아마 제일이야 그리고 당신 초기화 후 코드에서 설정 :

customViewController = [[MyCustomViewController alloc]initWithNibName:@"CustomViewController" bundle:nil]; 
[customViewController setFunky:YES]; 

다른 옵션은 만드는 것입니다 MyCustomViewDelegate에 대한 프로토콜. 그것이 IBOutlet이기 때문에,

@class MyCustomViewController; 

@protocol MyCustomViewDelegate 
@required 
-(BOOL)customViewShouldBeFunky:(MyCustomViewController*)customView; 
@end 

@interface MyCustomViewController : UIViewController { 
    NSObject<MyCustomViewDelegate> *delegate; 
} 
@property (readwrite, retain) IBOutlet NSObject<MyCustomViewDelegate> *delegate; 
@end 

을 당신은 인터페이스 빌더의 다른 위임 등의 대리자를 연결할 수 있습니다 : 당신이 프로토콜에 익숙하지 않은 경우, 헤더는 다음과 같이한다.

그런 다음보기가 작동하는 방식을 결정할 때 [delegate customViewShouldBeFunky:self]으로 전화하십시오.

3

ID 관리자의 "사용자 정의 런타임 속성"이 아마도 당신이 찾고있는 것일 것입니다. 이 seems to be new Xcode 4.2부터.

Apple 개발자 사이트에는 불행히도이 기능에 대한 많은 설명서가없는 것 같습니다. 간단한 속성 세트로 사용할 수있었습니다.

7

Xcode 6부터는이 작업을 수행하는 새로운 방법이 있습니다. 이제 뷰 속성에 IBInspectable 속성을 부여 할 수 있으며 IB에서 이러한 속성을 표준보기와 같이 편집 할 수 있습니다. 사과 설명서 (또한 새로운 속성 IBDesignable에 대한)

@property (nonatomic, strong) IBInspectable BOOL 

자세한 내용 : 그래서 예를 들면

여기 https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/chapters/CreatingaLiveViewofaCustomObject.html

0

속성을 재정의하고 사용자 정의 클래스에서 그들을 설정의 예입니다, 이것은 수도 도움. awakeFromNib가 호출되기 전에 속성 코드가 작동합니다. 따라서 awakeFromNib에서 사용자의 결정권에 따라해야 할 일을 결정할 수 있습니다.

https://stackoverflow.com/a/31094561/1699210

+0

안녕하세요, 당신의 마지막 두 답변이 삭제 된 답변을 가리키고 있습니다.이 링크를 눌러보세요. http://stackoverflow.com/a/31094561/1699210. 그럼에도 불구하고 서있는 것처럼 그들은 링크 만 대답으로 제거 될 수 있습니다, 당신은 그들을 육체로해야합니다. 일반적으로 이것은 바람직하게는 코멘트 일 것입니다 (나는 당신이 50 이하의 담당자가 될 수 없음을 안다) – bummi

관련 문제