0

ストーリーボードでは、UIViewControllerを作成し、同じストーリーボードにさらに2つのUIViewを追加しました。次に、UISegmentedControlを追加して、これらのUIView間の切り替えを有効にしました。

ここに画像の説明を入力してください

UIViewを切り替えるために使用する方法は次のとおりです。

-(IBAction)segmentValueChaged:(id)sender
{
if(self.segment.selectedSegmentIndex==0)
{
    [self.coinageView removeFromSuperview];
    [self.view addSubview:nominalsView];
    [self populateNominals:self.subCountryID];
}
else 
{
    [self.nominalsView removeFromSuperview];
    [self.view addSubview:coinageView];
}
}

そして、UIViewにUITableViewを追加するメソッド:

-(void)populateNominals:(int)subCountryID
{
UITableView *nominalsTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 372) style:UITableViewStylePlain];
//nominalsTableView.dataSource = self;
//nominalsTableView.delegate = self;
[self.nominalsView addSubview:nominalsTableView];
}

このアプローチはうまく機能し、セグメントを切り替えるときにテーブルがポップアップ表示されます。

私の質問は、すべてのセグメント(UIView)のすべてのtableViewをどこでカスタマイズできるかということです。問題は、2つのまったく異なる外観のテーブル(異なるデザイン、cellForRowAtIndexPath、およびdidSelectRowAtIndexPath中の異なるナビゲーション)が必要なことです。

前もって感謝します。

4

1 に答える 1

0

「2つのまったく異なる外観のテーブル」がある場合は、dataSourceを設定し、各テーブルビューのデリゲートを異なるオブジェクトに割り当てます。つまり、データソースとして機能し、テーブルのデリゲートとなる各テーブルのクラス/オブジェクトを作成します。通常、これらは「自己」に設定されますが、それである必要があると言うことは何もありません。

怠惰で美しい再利用可能なコードを気にしない場合は、すべてのtableViewデリゲートとdataSource呼び出しにif / elseステートメントを配置し、渡されたtableView変数を比較してそれがどのテーブルであるかを確認できます。しかし、それは少し醜くて混乱しやすいです。特に、2種類以上のテーブルに成長した場合。

于 2012-08-20T21:57:07.930 に答える