2012-06-14 33 views
0

我想添加新的類別到NSArrayController類:它可以選擇第一個和最後一個項目。我這樣做: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?然後,選擇哪個班級名稱來列出新方法?

感謝您的幫助......

+0

有你添加的類別,兩個聲明,向界面也是,還是隻能執行? – abarnert

回答

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 
+0

我覺得很愚蠢,我看着「selectNext」方法並寫道:(void)selectFirst:(id)sender; - (void)selectLast:(id)sender; 而不是(IBAction)。它現在可以工作,並且具有標準的IB對象。非常感謝你! – berfis

+0

@berfis,請點擊勾號以接受答案! – paulmelnikow

+0

糟糕,我錯過了這個功能。好的,點擊! – berfis