0

でタブバーコントローラーを正常にセットアップしました。最初のビューにはテーブルビューがあり、2番目のタブには単純なUIViewがあります。UIViewには独自のクラスがあります。後者にセグメント化されたコントロールを追加しました。最終的には、選択されているセグメントに応じて、テーブルビューのセルで使用される画像を変更したいと思います。

セル画像は配列の一部であり、カスタムセルを使用して設定されています。

UIViewクラスにセグメント化されたコントロールを設定して@propertyと@syntesizeを追加しましたが、UIViewクラスからセル画像を変更する方法を一生理解できません。

前もって感謝します!

UIView.hのセグメントコントロールは次のように定義されています

@property(weak、nonatomic)IBOutlet UISegmentedControl * selectedSegment

IBActionを含める必要がある場所や、その記述方法が100%ではないため、まだIBActionを含めていません。

私のテーブルビューでは、私の細胞画像は現在、cellForRowAtIndexPathのように定義されています

cell.itemImageView.image = [UIImage imageNamed:[icons objectAtIndex:indexPath.row]];

私の考えは、それぞれの場合が異なるアイコンセットを指しているように、cellメソッド内にswitchステートメントを配置することでした。

switch (something)
{
    case 0:
    cell.itemImageView.image = [UIImage imageNamed:[iconSetOne objectAtIndex:indexPath.row]];
    break;

    case 1:
    cell.itemImageView.image = [UIImage imageNamed:[iconSetTwo objectAtIndex:indexPath.row]];
    break;

    default
    break;
}

しかし、それは間違ったやり方であり、「何か」のビットが私が立ち往生しているものであると私はかなり確信しています。

4

1 に答える 1

1

1)UIViewセグメント化されたコントロールがある単純な場所:

  • _tableViewControllerテーブルビューのコントローラーに接続するアウトレットを定義します
  • segmentedControlChanged:トリガーされたセグメント化されたコントロールに応答するアクション メソッドを定義する

2)テーブルビューコントローラーで:

  • selectedSegmentIndexタイプのプロパティを定義するNSInteger

3) 次に、アクション メソッドの実装を追加します。

- (void) segmentedControlChanged:(id)sender
{
  UISegmentedControl* segmentedControl = (UISegmentedControl*)sender;
  _tableViewController.selectedSegmentIndex = segmentedControl.selectedSegmentIndex;
  [_tableViewController.tableView reloadData];
}

4)テーブルビューコントローラーswitchで、提案したステートメントを追加できるようになりましたtableView:cellForRowAtIndexPath:

switch (self.selectedSegmentIndex)
{
  [...]
}

手順 3で呼び出すreloadDataのは、テーブル ビューにすべてのセルを正しいイメージで更新するように強制する大雑把な方法であることに注意してください。UITableViewには、更新するセルをより細かく制御できる他の方法があります (例: reloadSections:withRowAnimation:)。

于 2013-01-08T00:59:04.273 に答える