私はテーブルビューを設計しました。メッセージを送信するための[フォロワーの選択]リスト用に、そこでいくつかのフォロワーを選択して、Twitterでメッセージを送信できます。
これを行うために、UITableViewCellAccessoryCheckmarkでUITableViewを使用しています。
しかし、テーブルを下にスクロールすると、チェックされている行は毎回チェックされていません。
FollowerListView.hで選択したフォロワーのテーブルビューと配列をクリアしました
@interface FollowersListView : UIViewController<UITableViewDelegate,UITableViewDataSource>{
IBOutlet UITableView *tableFollowers;
NSMutableArray *listFollowrsName;
NSMutableArray *listSelectedFollowrsId;
}
@property(nonatomic,retain) NSMutableArray *listFollowrsName;
@property(nonatomic,retain) NSMutableArray *listSelectedFollowrsId;
@end
そして私のテーブルビューコードはFollowersListView.mファイルでこのようになっています
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [listFollowrsName count];
}
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:@"CellWithSwitch"];
//if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellWithSwitch"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.font = [UIFont systemFontOfSize:14];
//cell.accessoryType = UITableViewCellAccessoryCheckmark;
cell.accessoryType = UITableViewCellStyleDefault;
//}
NSString *cellValue = [listFollowrsName objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
return cell;
}
//to select a row
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
NSLog(@"row is un-checked %@",[NSNumber numberWithInt:path.row]);
[listSelectedFollowrsId removeObject:[NSNumber numberWithInt:path.row]];
NSLog(@"Now selected person are%@",listSelectedFollowrsId);
} else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
NSLog(@"row is checked %@",[NSNumber numberWithInt:path.row]);
[listSelectedFollowrsId addObject:[NSNumber numberWithInt:path.row]];
NSLog(@"Now selected person are%@",listSelectedFollowrsId);
}
}
すでに保存されている選択リストに従ってすべてのセルをロードする必要があると思いますが、その方法はわかりません。
誰かが私が間違っているところを案内できますか、助けていただければ幸いです
編集
@Novarg
「 listSelectedFollowrsId」を.hファイルのNSMutable配列として宣言し、viewDidLoadメソッドで初期化してから、 didSelectRowAtIndexPathメソッドで値を追加/削除して、選択した行を管理しました。