0

SDK 10.6 と Xcode 4.2 を使用しています。

「ペン先の外」に存在するコントローラーに「プロパティ」をバインドしたい。どうすればよいですか:

  • インターフェイスビルダーで?
  • それなしで?

enabledより正確には、 a のプロパティを、NSButton「ペン先の外」に存在する arrayControllerにバインドしたいと考えています。インターフェイスビルダーでプロパティをバインドできる唯一のオブジェクトは、プレースホルダーまたはオブジェクトです。しかし :

  • プレースホルダーを変更できません。
  • NIB への arrayController があった場合、NIB がロードされたときにそれが作成されます。

なぜ私はこのような状況にあるのですか?理由: arrayController は私の NIB にあります。ボタンは別のNIBにあります。この 2 番目の NIB は、メイン ビューのサブビューです。

手伝ってくれてありがとう :)

4

1 に答える 1

0

答えを見つけたと思います。

いくつかの表記:

  • MySubiewControllerそしてMySubiewController.xib、いくつかのバインディングを実行したいオブジェクトのカップルです。それらはサブビューとして考える必要があります。
  • 私のプログラムのどこか「上」には、すでにmyMainArrayController. これは、ArrayController私のデータにリンクされ、「私のメイン ビューで作成された」ものです。

今:答え。

  • まず、たとえば のinitメソッドを使用して、変数MySubiewControllerに保存myMainArrayControllerします (プログラムで使用する前に、この変数を.hとして公開する必要があり@propertyます)。この変数に同じ名前を付けましょう (任意の名前を付けることができます)。例えば ​​:

     - (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

  • それでおしまい!!!それはうまくいくはずです!

于 2013-03-20T15:25:10.193 に答える