2011-09-15 30 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的「刷新」。