我刚开始从 iOS 开始进行 Mac 编程,并且正在玩绑定。
我正在尝试制作一个简单的目录弹出窗口,显示最近选择的目录的历史记录,最后一个元素将读取other...
将打开打开对话框。
我似乎无法弄清楚如何将 NSPopupButton 绑定到我的模型。
它的设置是这样的:MainUIViewController、NSController、NSObject Controller 都连接在笔尖中
我确实将 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 中的对象控制器时,弹出窗口中什么也没有显示,我不明白为什么!
非常感谢任何帮助,对于冗长的帖子感到抱歉 - 只是想让自己清楚。