Objective-C Section Headers没有正确显示?

时间:2010-08-16 08:27:09

标签: objective-c uitableview header

我将 Station 对象定义为:

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

我还有一个名为' StationList '的NSMutableArray,它是一个Station对象列表。此列表按“呼号”按字母顺序排序。

我还有另一个名为' generalList '的NSArray,包含字母“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数据。我的代码有什么问题(我怀疑它是谓词)

1 个答案:

答案 0 :(得分:0)

您阅读[stationList ObjectAtIndex:[indexPath row]]。但NSIndexPath对象的行不是整体,而是该部分中的行。您必须实现- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section并返回每个部分的确切行数。所以你必须自己处理哪个单元格在哪个部分。

我更喜欢一个NSDictionary,其字母表中的每个字母都带有一个键,而且它的对象是NSArray与Station对象的对象。