2010-08-16 53 views
0

我有限定的對象爲:Objective-C的節頭顯示不正確?

@interface RFStation : NSObject { 
    NSString *stationID; 
    NSString *callsign; 
    NSString *logo; 
@end 

我也有一個NSMutableArray稱爲「StationList」,這是站的對象的列表。這個名單是由「呼號」按字母順序排序。

我也有另一個NSArray的所謂的「generalList」,含字母「A」至「Z」

我想創建第一個UITableView報頭對應於每個呼號的第一個字母A-Z。

我現在有這些方法定義&對象:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [generalList count]; 

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    return [generalList objectAtIndex:section]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    NSPredicate *filter = [NSPredicate predicateWithFormat:@"callsign beginswith[cd] %@",[generalList objectAtIndex:section]]; 
    return [[stationList filteredArrayUsingPredicate:filter] count]; 
} 

,當然還有:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    RFStation *aStation = [stationList ObjectAtIndex:[indexPath row]]; 
    static NSString *identity = @"MainCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identity]; 

    if(cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0.0, 0.0, 0.0, 0.0) reuseIdentifier:identity] autorelease]; 
    } 
    cell.text = aStation.callsign; 

    return cell; 
} 

而我的頭不出現在NSMutableArray中的數據正確地排序。什麼是錯我的代碼(我懷疑這是謂語)

回答

0

你讀[stationList ObjectAtIndex:[indexPath row]]。但NSIndexPath對象的行不是整體它在部分行。你必須實現- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section並返回每節行的確切數目。所以你必須自己處理哪些單元在哪個部分。

我寧願用的NSDictionary在字母和它們的對象NSArray的與站對象每個字母的關鍵。