2016-11-10 6 views
-1

私がしようとしているのは、いくつかの新しいデータをデータソース配列に挿入し、[tableView reloadData]を実行することです。新しい配列を挿入することはできますが、2つの問題があります。ラジオボタンでタップした挿入テーブルセルを実装するアプローチ

1)新しいセルに2つのラジオボタンがあり、ユーザーが選択できるようにしたい。新しいセルオブジェクトなどを定義する必要がありますか?

2)データを再読み込みすると、選択したセルの色を以前のように緑色に設定することはできません。

またはベストにこれを実装する方法の他の提案は、ありがとう!!: 最初の問題についてはenter image description here

答えて

1

、私はどうなることは事前にレイアウトされているいずれかのストーリーボードに2つのラジオボタンを含むセル( .xibファイルでも行うことができます)。次に、 "LanguageSkillSelectionTableViewCell"などの識別子を設定します。その後、テーブルビューに新しいデータセットをロードしようとしているときに、コールバックを介してテーブルビューのセルの表示を管理できますcellForRowAtIndexPath:

たとえば、そのLanguageSkillSelectionTableViewCellを常にロードする最初は、次にindexPath.row == 0に設定します。それ以外の場合は、データリストの内容を他の行に設定します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *tableCell; 

    if(_loadedNewData) 
    { 
     if(indexPath.row < dataList.count && indexPath.row > 0) 
     { 
      tableCell = (DataTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"DataTableViewCell"]; 

      //set attributes of the tableCell 
     } 

     else 
     { 
      tableCell = (LanguageSkillSelectionTablViewCell *)[tableView dequeueReusableCellWithIdentifier:@"LanguageSkillSelectionTableViewCell"]; 

      //set attributes of the tableCell 
     } 
    } 

    else 
    { 
     //load in default order 
    } 

    return tableCell; 
} 

このコールバックの下にあるセルの配列とプレゼンテーションで再生できます。

第2の問題は、ユーザーが選択した選択項目のフラグまたは状態をクラス内のグローバル変数に格納することです。その後、セルがリロードされるたびに、そのセルのラジオボタンの選択状態を更新するメソッドを設定することによって、そのセルの選択状態を更新することができます。例えば

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *tableCell; 

    if(_loadedNewData) 
    { 
     if(indexPath.row < dataList.count && indexPath.row > 0) 
     { 
      tableCell = (DataTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"DataTableViewCell"]; 

      //set attributes of the tableCell 
     } 

     else 
     { 
      tableCell = (LanguageSkillSelectionTablViewCell *)[tableView dequeueReusableCellWithIdentifier:@"LanguageSkillSelectionTableViewCell"]; 

      //set attributes of the tableCell 

      [(LanguageSkillSelectionTablViewCell *)tableCell setLanguageSelectionState:canReadWrite]; 
     } 
    } 

    else 
    { 
     //load in default order 
    } 

    return tableCell; 
} 
:ユーザーが英語を選択した場合は

、それは次のようになります

関連する問題