NSArrayController,NSPopupButton正确绑定

时间:2012-09-11 20:26:44

标签: xcode macos cocoa-bindings nsarraycontroller nspopupbutton

我刚刚开始从iOS进行Mac编程,并正在玩绑定。

我正在尝试创建一个简单的目录弹出窗口,其中显示最近选定目录的历史记录,最后一个元素将显示other...,这将打开opendialog框。

我似乎无法弄清楚如何将NSPopupButton绑定到我的模型中。

它的设置如下: MainUIViewController,NSController,NSObject控制器都在nib中连线

the NIB file

我确实将MainUIViewController中的插座连接到NIB中的Directory Array Controller 我有一个eachDirectory类,还有一个DirectoryArrayController(NSObject)类我以这种方式绑定NSPopupButton:

Directory Array Controller bindings

我将目录阵列控制器绑定到目录弹出阵列控制器

Directory Popup Array Controller bindings

这是连接到目录弹出阵列控制器的.h文件

@interface DirectoryPopupArrayController : NSObject
   @property (weak) IBOutlet NSPopUpButton *directoryPopupButton;
   @property (nonatomic) IBOutlet NSMutableArray *allDirectoryHistory;
   @property (nonatomic) eachDirectory *currentlySelectedDirectory;
@end

我使用相应的.m文件中的以下代码填写一些示例目录信息

- (void)awakeFromNib {
    [super awakeFromNib];
    //testing sample directories
    self.allDirectoryHistory = [[NSMutableArray alloc] initWithCapacity:10];
    NSString *name;
    eachDirectory *newDirectoryName;
    for (int i = 0; i < 5; i++) {
        name = [NSString stringWithFormat:@"directory %d", i];
        newDirectoryName = [[eachDirectory alloc] initWithDirectoryName:name];

        [self.allDirectoryHistory addObject:newDirectoryName];
    }
}

这是eachDirectory.h的代码

@interface eachDirectory : NSObject
  @property (nonatomic) NSString *directoryPath;
  @property (nonatomic) NSString *directoryVisibleName;

  -(id) initWithDirectoryName:(NSString *)newName;
@end

现在当我转到我的代码时如果我放置代码来创建Array并将Array控制器直接绑定到UIViewController.m文件似乎工作正常。  我想要做的是在一个单独的类文件中处理所有数组的东西,只返回主控制器的最终目录选择。当我如上所述将NSArrayController绑定到NIB中的Object控制器时,我在弹出窗口中没有显示任何内容,我不明白为什么!

非常感谢任何帮助,对于冗长的帖子感到抱歉 - 只是想让自己清楚。

0 个答案:

没有答案