2012-01-16 19 views
2

UITableViewを扱うときに狂った問題に遭遇していますが、セクション化されたUITableViewで複数の選択(チェック)を行う良いサンプルプロジェクト(github)やチュートリアルがありますか?つまり、ユーザーが上下にスクロールして別のセクションのセルを選択/選択解除できる長いUITableViewを意味します。 私が実行した問題は、異なるセクションのセルをチェックし、テーブルビューを上下にスクロールすることです。アプリがクラッシュし、より良いケースでは、画面を下にスクロールするとランダムなセルがチェックされます(テーブルビュー)。だから私は私のアプリにそれを統合する前にすべてを試して、簡単なプロジェクトを作ることにしました。長いセクションの複数チェックUITableView

クラッシュを引き起こすアクションの1つは、セクション1のcell1をチェックし、セクション2のcell2をチェックしてからセクション1のcell1のチェックを外すことです。 サンプルがhereで、それをテストしてください、それがブレークポイントでクラッシュを追跡し、あまりにも軽量ですが、私はこの方法が問題を引き起こしていることがわかった:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSDictionary *dict = [self.tableData objectAtIndex:[self tableIndexFromIndexPath:indexPath]];//this statement is the issue, i think the app is conflicting between sections when check/uncheck cells 
    BOOL newState = ![[dict objectForKey:kCellStateKey] boolValue]; 
    NSDictionary *newDict = [NSDictionary dictionaryWithObjectsAndKeys:[dict objectForKey:kCellTextKey], kCellTextKey, [NSNumber numberWithBool:newState], kCellStateKey, nil]; 
    [self.tableData replaceObjectAtIndex:indexPath.row withObject:newDict]; 

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
} 

私は本当に私のコードを改善するために、あなたの専門知識を必要としています。あらかじめThanx。

+0

にすべてDictsを変更 – jrturton

+0

こんにちは、自分の投稿を編集しました。私のコードを支持して、セルをチェック/チェック解除し、クラッシュすることなくUITableViewを上下にスクロールできるようにしてください。それは私の究極の目的のままです。 – Malloc

答えて

0

テーブルが正しく割り当てられていても何らかの理由でDICTを置き換えるのが好きではありません。これは機能します。

1)どのようなあなたの問題であり、どのようにあなたは、現時点ではそれを解決しようとしている?MutableDicts

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableDictionary *dict = [self.tableData objectAtIndex : [self tableIndexFromIndexPath : indexPath]]; 

    BOOL newState = ![[dict objectForKey:kCellStateKey] boolValue]; 

    [dict setValue :[NSNumber numberWithBool:newState] forKey : kCellStateKey]; 

    NSArray *test = [[NSArray alloc]initWithArray : [NSArray arrayWithObject:indexPath] ]; 

    [tableView reloadRowsAtIndexPaths : test withRowAnimation:UITableViewRowAnimationNone]; 
} 
関連する問題