2009-11-16 74 views
1

我想列出在TableView中的鈴聲目錄的內容,但是,我只獲取目錄中所有單元格中的最後一個文件,而不是每個單元格中的文件。這是我的代碼:在UITableView中列出目錄的內容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Profile_ManagerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
     cell.hidesAccessoryWhenEditing = YES; 
    } 

    cell.accessoryType = UITableViewCellAccessoryNone; 
    //cell.textLabel.text = @"No Ringtones"; 
    //cell.textLabel.text = @"Test"; 

    NSString *theFiles; 
    NSFileManager *manager = [NSFileManager defaultManager]; 
    NSArray *fileList = [manager directoryContentsAtPath:@"/Test"]; 
    for (NSString *s in fileList){ 
     theFiles = s; 
    } 
    cell.textLabel.text = theFiles; 

    return cell; 
} 

它加載罰款,沒有任何錯誤,當我使用它NSLog列出目錄中的所有文件就好了。我甚至嘗試[s objectAtIndex:indexPath.row],但我得到objectAtIndex:錯誤。有人有主意嗎?

+0

也許你應該在頭文件中創建數組,這樣你就可以訪問主文件中任何地方的文件。如果你不這樣做,那麼除非你已經預先設置了這個數字,但是如果你有人添加文件或者刪除它,那麼你怎樣才能設置表格項的數量,這將更容易得到目錄中項目的數量。 – Maximilian 2011-10-01 18:00:23

回答

0

您的for循環只是迭代文件並將文件設置爲當前路徑。所以在循環結束時,文件將只是集合中的最後一個字符串。

試着這麼做:

cell.textLabel.text = [fileList objectAtIndex:indexPath.row]; 
+0

對於這個答案你是半正確的,實際上不正確的是允許objectAtIndex的NSMutableArray。 – WrightsCS 2009-11-16 06:02:56

+0

objectAtIndex在NSArray上提供,但它不是嗎? – 2009-11-16 06:28:02

1

我其實愛問上的問題在這裏,事業不到10分鐘,我回答我的問題!

這是我得到了上面的代碼工作:

NSMutableArray *theFiles; 
NSFileManager *manager = [NSFileManager defaultManager]; 
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"]; 
for (NSString *s in fileList){ 
    theFiles = fileList; 
} 
cell.textLabel.text = [theFiles objectAtIndex:indexPath.row]; 
return cell; 

我只是做了NSString的一個NSMutableArray,並允許我使用的objectAtIndex。現在修剪文件擴展名!

+0

你確實意識到你在這裏多次複製數組,這是非常低效的。你不需要for循環,我懷疑你需要創建一個可變的數組副本。 – 2009-11-16 06:26:52

1

您應該刪除的NSString,NSMutableArray裏和循環..最終代碼應該是這樣的:

NSFileManager *manager = [NSFileManager defaultManager]; 
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"]; 
cell.textLabel.text = [fileList objectAtIndex:indexPath.row]; 
return cell; 

順便說一句,這個的文件列表並反覆經理創建的每個細胞。所以最好是使它一個UITableViewController的全局變量,並且只分配1個

相關問題