2016-07-06 4 views
0

私は、検索可能なデータと編集可能なtextField(pickerViewで編集可能)を含む1つのセルを含むテーブルビューを持っています。私はpickerViewを使用して、表示するテーブルビューのセクションを選択しています。新しい行がpickerViewで選択されている場合しかし、私は私がリロードテーブルビュー(1セルを除く)

[self.tableView reloadData]; 

を使用するときに私がしようとし、問題を解決するために以下のことを試してみた何が起こるかである、pickerViewが却下されないようにしますこれはEXC_BAD_ACCESSでクラッシュ

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
NSIndexSet *toReload = [[NSIndexSet alloc] initWithIndex:1]; 
if (row == 0) 
{ 
    self.selectedDepartmentField.text = @"All"; 
    toReload = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 13)]; 
} 
else 
{ 
    self.selectedDepartmentField.text = [self.departments objectAtIndex:(row - 1)]; 
} 
[self.tableView reloadSectionIndexTitles]; 
[self.tableView beginUpdates]; 
[self.tableView reloadSections:toReload withRowAnimation:UITableViewRowAnimationNone]; 
[self.tableView endUpdates]; 

(コード= 1、アドレス=の0x28)

どのように私はpickerViewを維持するために、テーブル内のデータを再ロードするに取り掛かる必要があります:TextFieldを含むセル以外のテーブルをリロードアクティブですか?続き

+0

テーブルにはいくつのセクションがありますか? – Avi

+0

pickerViewが行0を選択すると、14個のセクションが表示されます。それ以外の行にある場合は、2つのセクションがあります – trumpeter201

+0

クラッシュを引き起こすのはどのラインですか?必要に応じて、例外ブレークポイントを有効にして見つけます。 – Avi

答えて

1

  1. visibleIndexPathsからピッカーでセルのindexpathを削除

    NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows]; 
    
  2. NSIndexPathの配列を取得する一つの可能​​なアプローチです。

  3. リロードこれはピッカーを有するもの以外のすべての可視セルを再ロードする必要があり、以下の方法を

    [self.tableView reloadRowsAtIndexPaths:visibleIndexPaths withRowAnimation:UITableViewRowAnimationNone]; 
    

を使用してテーブルビュー。

+0

これは私にとってはうまくいかず、「行0をセクション2に挿入しようとしましたが、更新後には2つのセクションしかありません」というエラーが表示されます。テーブルビューが更新されると、行とセクションが少なくなるため、これが原因である可能性があります。 – trumpeter201

関連する問題