2013-10-07 36 views
1

我有以下目标C代码保持错误抱怨我重新定义它时,我不!我想实现一个NSTableViewDelegate的事情,但Xcode中不停地抱怨SidebarDelegate作为不同类型的符号的重定义

#import "AppDelegate.h" 

#import <AppKit/AppKit.h> 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // add Hello World to sidebar 
    [self.Sidebar.tableView insertValue:0 atIndex:0 inPropertyWithKey:@"Hello World!"]; 

    [self.Sidebar.tableView setDelegate: SidebarDelegate()] 

    // reload data 
    [self.Sidebar.tableView reloadData]; 


} 

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication { 
    return YES; 
} 

@end 

// Sidebar Delage 

@implementation SidebarDelegate : NSObject <NSTableViewDelegate, NSTableViewDataSource>; 

// setting data 
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
    anObject = @"Apples"; 
} 

// height 
- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row 
{ 
    return 20; 
} 

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex 
{ 
    NSLog(@"%ld", (long)rowIndex); 
    return ((long)rowIndex % 2) == 0; 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView 
{ 
    return 4; 
} 

@end 

回答

1

更换

[self.Sidebar.tableView setDelegate: SidebarDelegate()]; 

SidebarDelegate *sidebarDelegate = [[SidebarDelegate alloc] init]; 
[self.Sidebar.tableView setDelegate:sidebarDelegate]; 
1

这条线:

[self.Sidebar.tableView setDelegate: SidebarDelegate()]; 

隐含创建一个名为形式的SidebarDelegate()

int SidebarDelegate(void) 

这样的功能,当你尝试要定义一个具有相同名称的类,则会以不可接受的方式覆盖该符号。你需要初始化一个SidebarDelegate的实例,并将其作为TableView的委托传递给我,假设我只是传递类的名字。

相关问题