最初に、私の問題を完全に理解できるように、いくつかの背景情報を提供します。私は解決策を探すのに何時間も費やしましたが、それでもそれを正しく理解できないようです。そこで、uiviewcontroller(SubviewPracticeMasterViewController)のサブビューとしてtableViewをロードするアプリを作成しようとしています。テーブルビューは別のuiviewcontroller(SubviewPracticeViewController)でサブクラス化され、SubviewPracticeMasterViewControllerでuiviewとしてロードされます。
LeadsInformationというNSObjectもあります。LeadsInformation.hは次のようになります
#import <Foundation/Foundation.h>
@interface LeadsInformation : NSObject
@property (nonatomic, copy)NSString *leadName;
@property (nonatomic, copy)NSString *lastName;
@property (nonatomic, copy)NSString *firstName;
@property (nonatomic, copy)NSString *areaCode;
@property (nonatomic, copy)NSString *phoneNumber;
@property (nonatomic, copy)NSString *status;
@property (nonatomic, copy)NSString *notes;
-(id)initWithName: (NSString *)leadName lastName: (NSString *)lastName firstName: (NSString *)firstName
areaCode: (NSString *)areaCode phoneNumber: (NSString *)phoneNumber status: (NSString *)status
notes: (NSString *)notes;
@end
そのため、SubviewPracticeViewController.mでは、プログラムで4つのLeadsInformationオブジェクトを「dataArray」という配列に追加し、cellForRowAtIndexPathメソッドのカスタムセルに特定の文字列値を読み込みます。
今、これが私の問題が発生しているところです。また、xibファイルからカスタムヘッダーを読み込んでいます。ヘッダーには2つのボタンがあります。最初のボタンで最初の列に基づいてセルをアルファベット順に並べ替え、2番目のボタンでセルの2番目の列に基づいてセルをアルファベット順に並べ替えます。
テーブルビューは、カスタムテーブルヘッダーも含めて、希望どおりに表示され、ボタンがクリックされています。ただし、セルは並べ替えられていません。ヘッダーのボタンに関連付けられたIBActionメソッドの最初の列で並べ替えるためのコードを配置しました。コードは次のとおりです。
- (IBAction)sortLeadName:(id)sender {
NSSortDescriptor *leadNameDescriptor = [[NSSortDescriptor alloc] initWithKey: @"leadName" ascending:YES selector:@selector(localizedStandardCompare:)];
NSArray *sortDescriptor = [NSArray arrayWithObject:leadNameDescriptor];
NSArray *sortedArray = [self.dataArray sortedArrayUsingDescriptors:sortDescriptor];
self.dataArray = [[NSMutableArray alloc] initWithArray:sortedArray];
[[self tableView] reloadData];
}
念のため、cellForRowAtIndexPathのコードを次に示します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"Identifier"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
LeadsInformation *leadAtIndex = [self.dataArray objectAtIndex: indexPath.row];
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = leadAtIndex.leadName;
label = (UILabel *)[cell viewWithTag:2];
label.text = leadAtIndex.status;
return cell;
}
どんな助けでも大歓迎です。ありがとう!