2011-09-15 28 views
0

在Xcode中4我创建了一个名为Tabletest一个新的Cocoa应用程序,在我加入了厦门国际银行一个NSTableView并控制拖动到应用程序的delegate object(当你创建新的Cocoa程序自动创建) 。我将表的dataSource和委托设置为名为Tabletest App Delegate的应用程序委托对象。NSTableView的显示不NSMutableArray的内容

tabletestAppDelegate.htabletestAppDelegate.m我增加了(显然)需要

- (int)numberOfRowsInTableView:(NSTableView *)tableView; 
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row; 

- (int)numberOfRowsInTableView:(NSTableView *)tableView 
{ 
    return (int)[myArray count]; 
} 

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row 
{ 
    return [myArray objectAtIndex:row]; 
} 

并宣布NSMutableArrayNSMutableArray * myArray;
然后我控制拖动表格的.h和创建的属性,如:

@property (assign) IBOutlet NSTableView *myTable; 

.m文件我加的numberOfRowsInTableView和的实施

并补充说:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    myArray = [[NSMutableArray alloc] initWithCapacity:10]; 
    int i = 0; 
    for(i=0; i<10;i++) 
    { 
     [myArray insertObject: [NSString stringWithFormat:@"This is string %d!",i+1] atIndex:i]; 
    } 

    NSEnumerator * enumerator = [myArray objectEnumerator]; 
    id element; 

    while((element = [enumerator nextObject])) 
    { 
     // Do your thing with the object. 
     NSLog(@"%@", element); 
    } 

} 

的`的NSLog显示阵列得到填补,但从来没有信息显示在桌面上。我错过了什么?我是Cocoa的一名新手,我不知道为什么向简单的表添加信息太复杂了。

感谢您的帮助。

+1

你是怎么实现这两种方法的? – 2011-09-15 13:03:57

+1

你能编辑你的问题并向我们展示这两个数据源方法的实现吗?你检查过这些方法是否正在执行?你是否检查过这两种方法中是否有10个元素的数组? – 2011-09-15 13:04:47

+0

@Bavarious我加了他们 –

回答

0

我会回答我的问题,加

[_myTable reloadData]; 
2

的applicationDidFinishLaunching火灾时,已经加载了看法。 在这个时候你的数组是空的。 表的调用reloadData应该可以解决该问题。

+0

谢谢。我已经确定了那个。 –

0

没有为不显示含量研究另一个方面: 如果添加一个新的项目到您的阵列程序,在您的应用程序在任何时候动态意义(不是在的applicationDidFinishLaunching的“初始化”阶段)。

在这种情况下,创建一个IBOutlet您arraycontroller和呼叫rearrangeObjects

// ... adding items to myArray 
[myArray insertObject: yadayada ...]; 

// then let the controller rearrange the objects 
[arrayCtrl rearrangeObjects]; 

这就像一个新元素的tableview的“刷新”。