0

我正在尝试向 NSArrayController 类添加新类别:它可以选择第一项和最后一项。我这样做了:

#import "NSArrayController+selectEnds.h"

@implementation NSArrayController (selectEnds)

- (void)selectFirst:(id)sender {
    if (self.arrangedObjects !=nil){ BOOL ignore = [self setSelectionIndex:0];}
}
- (void)selectLast:(id)sender {
    if (self.arrangedObjects !=nil){ 
        NSUInteger lastItem = [self.arrangedObjects count]-1;
        BOOL ignore = [self setSelectionIndex:lastItem];}
}
@end

我没有收到任何错误,但我想将此对象放入 IB 中,使用蓝色立方体并将按钮绑定到其“selectFirst”和“selectLast”方法。

但我有点迷茫:从哪个标准对象开始?一个标准的 ArrayController?然后,选择哪个类名来列出新方法?

感谢您的帮助……</p>

4

1 回答 1

1

由于您没有显示 NSArrayController+selectEnds.h(这是 IB 实际查看的内容),仅显示 NSArrayController+selectEnds.m,因此很难确切知道您做错了什么,但有两个合理的猜测。

首先,如果您希望这些新方法成为 NSArrayController 类的接口的一部分,您必须将它们添加到接口声明中,而不仅仅是添加到实现中。

其次,如果您希望 Xcode(或 IB)知道这些新方法是操作,则必须将它们标记为:在接口中,不要将它们标记为普通的 void 方法,而是将它们标记为 IBAction 方法。(在实现中,你可以做任何一个;没关系。)

所以, NSArrayController+selectEnds.h 应该是:

#import <Cocoa/Cocoa.h>
@interface NSArrayController (selectEnds)
- (IBAction)selectFirst:(id)sender;
- (IBAction)selectLast:(id)sender;
@end
于 2012-06-14T23:34:33.930 回答