1

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

我正在尝试制作一个简单的目录弹出窗口,显示最近选择的目录的历史记录,最后一个元素将读取other...将打开打开对话框。

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

它的设置是这样的:MainUIViewController、NSController、NSObject Controller 都连接在笔尖中

NIB 文件

我确实将 MainUIViewController 中的插座连接到 NIB 中的目录阵列控制器我有一个用于 eachDirectory 的类,还有一个用于 DirectoryArrayController(NSObject) 的类我以这种方式在视图上绑定 NSPopupButton:

目录阵列控制器绑定

我将目录数组控制器绑定到目录弹出数组控制器,因此

目录弹出数组控制器绑定

这是连接到目录弹出阵列控制器的 .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 中的对象控制器时,弹出窗口中什么也没有显示,我不明白为什么!

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

4

0 回答 0