2013-03-20 3 views
0

저는 Xcode 4.2와 함께 SDK 10.6에서 작업합니다.외부 컨트롤러에 속성을 바인딩하는 방법?

"내 펜촉에서 벗어난"컨트롤러에 "속성"을 바인딩하고 싶습니다. 어떻게해야합니까?

  • Interface Builder를 사용하고 있습니까?
  • 없습니까?

더 정확하게, 나는 "내 펜촉에서"존재하는 arrayController에 NSButtonenabled 속성을 바인딩 할. 인터페이스 빌더에서 속성을 바인딩 할 수있는 유일한 개체는 자리 표시 자 또는 개체입니다. 하지만 :

  • 자리 표시자는 변경할 수 없습니다.
  • NIB에 arrayController가 있으면 내 NIB가로드 될 때 작성됩니다.

왜 이런 상황입니까? 왜냐하면 arrayController가 내 NIB에 있습니다. 버튼은 다른 NIB에 있습니다. 이 두 번째 NIB는 내 메인보기의 하위보기입니다.

감사합니다.

답변

0

답변을 찾았습니다.

일부 표기법 :

  • MySubiewControllerMySubiewController.xib 내가 어떤 바인딩을 수행 할 오브제의 부부입니다. 그들은 하위보기로 생각해야합니다.
  • 내 프로그램의 다른 곳, "위"에 이미 myMainArrayController이 있습니다. ArrayController이며 내 데이터와 연결되어 있고 "내 메인보기에서 생성되었습니다"입니다.

지금 : 답변입니다.

  • 첫째, MySubiewControllerinit 방법을 통해 예를 들어, (프로그램에서 사용하기 전에 @property (이것은 더 나은 된대로 .h에서이 변수를 노출해야)) 어떤 변수에 myMainArrayController를 저장합니다. 이 변수에 같은 이름을 붙이자. (이름을 붙일 수있다.) 예를 들어 :

    - (id)initWithNibName:(NSString *)nibNameOrNil 
           bundle:(NSBundle *)nibBundleOrNil 
        withArrayController:(NSArrayController *)anArrayController 
    { 
        NSLog(@"Creation of an instance of MySubiewController"); 
    
    
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
        if (self) { 
         myMainArrayController = anArrayController ; 
        } 
    
        return self; 
    } 
    

    이 이미 소재 기존 arrayController 당신의 "서브 뷰"를 말할 것이다 곳입니다.

  • 바인딩을 File's Owner으로 작성한 다음 self.myMainArrayController으로 지정하십시오.

  • 그렇습니다! 그것은 작동해야합니다!

관련 문제