0

UITableViewiOS には、アルファベット順に並べ替える必要があるクライアントのリストがあります。

並べ替えボタンは、クライアントをアルファベット順に並べ替えます。

-(void)prepareSortedClients {
    //Check if my clients are sorted, then create the index and clients
    if (!self.alphaKeys) {
        //No list of appropriate characters for side index, create it
        NSMutableSet *alphaSet = [[NSMutableSet alloc] init];
        for ( RMClients *thisClient in self.clients )
        {
            if ( thisClient.name > 0 )
                [alphaSet addObject:[thisClient.name substringToIndex:1]];
        }

        NSArray *indexArray = [[alphaSet allObjects] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
        self.alphaKeys = indexArray;
    }

    if (!self.sortedClients) {
        //Clients are not sorted, do it
        self.sortedClients = [[NSMutableDictionary alloc] init];
        //Create a set of all the client objects
        NSSet *allClients = [NSSet setWithArray:self.clients];

        //go through alpha keys and populate Dictionary with the appropriate clients
        for (NSString *thisAlphaKey in self.alphaKeys) {
            //get all clients starting with this key
            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name beginswith[c] %@",thisAlphaKey];
            NSSet *filteredSet = [allClients filteredSetUsingPredicate:predicate];
            //the filteredSet now contains only the clients starting with this letter. Now, sort them and set the sortedClients's corresponding key to this array
            [self.sortedClients setObject:[[filteredSet allObjects] sortedArrayUsingSelector: @selector(localizedCaseInsensitiveCompare:)] forKey:thisAlphaKey];    
    }
}

これによりソートが処理され、すべてが見栄えがよくなります。私のクライアントは、適切なセクションとすべてを含むクライアントのタイトルに従ってソートされます。私が経験している問題は、各セルに 4 つのボタンがあることです (会社に関する追加情報 (概要、財務など) を提供します)。

ソートされていない元のリストでは、これらのボタンが適切な場所に移動し、そのセルのクライアントに関する情報が表示されます。

アルファベット順のソートでは、適切なクライアントページに向けられた文字「A」を使用してクライアントのソートを取得します...文字「B」の下にある特定のクライアントのボタンの1つをクリックすると、文字「A」の下の最初のクライアント。

そのため、残りのクライアントがそこに表示されていても、そのようなものは得られません。

私がどこを台無しにしたか分かりますか?

---追加コード--- (これは、コード内のボタンを参照する場所です)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    RMCustomClientCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ClientCell"];

    RMClients *client;

    if(!self.alphaMode){
        client = [self.clients objectAtIndex:indexPath.row];
    } else {
        NSString *key = [self.alphaKeys objectAtIndex:indexPath.section];
        NSArray *specificClients = [self.sortedClients objectForKey:key];            
        client = [specificClients objectAtIndex:indexPath.row];
    }

    cell.financialDetailsButton.tag = indexPath.row;
    cell.overviewDetailsButton.tag = indexPath.row;
    cell.pressReleaseDetailsButton.tag = indexPath.row;
    cell.eventsDetailsButton.tag = indexPath.row;

    cell.nameLabel.text = client.name;
    cell.symbolLabel.text = client.symbol;
    [cell.logoView setImageWithURL:[NSURL URLWithString:client.logoURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    return cell;
}
4

0 に答える 0