8

私はこの質問を見ました:

UITableView セルの UISwitch

しかし、動的ページを扱っているようでした。私は本当に自分のアプリの設定ページを作成しようとしているだけで、テーブル内のいくつかのセル (すべてではない) では、テーブル セルのスイッチが必要です。どうすればこれを行うことができますか?

4

4 に答える 4

23

Interface Builder での動作は次のとおりです。コードは必要ありません。

  • UISwitch を View Controller にドラッグします。メインビューの外にある必要があります。他のものと一緒にくつろいでいるだけです。

  • このスイッチが必要なテーブル ビュー セルを Ctrl キーを押しながらクリックし、新しいスイッチにドラッグします。1を参照してください。 ここに画像の説明を入力

  • スイッチをテーブル ビュー セルの accessoriesView アウトレットに接続します。2を参照してください。 ここに画像の説明を入力

アプリを実行し、スイッチが表に表示されるのを確認します - 完了です!

注: 奇妙なことに、スイッチは Interface builder に表示されません。ただし、アプリを実行すると表示されます

インスタンス変数にも接続したい場合 (たとえば、後でその "on" プロパティを読み取ることができるようにするため) は、他のビュー34と同じようにアウトレットに接続します。

ここに画像の説明を入力 ここに画像の説明を入力

PS: UISwitch のオン/オフ状態は、「選択」ではなく「オン」プロパティにあることに注意してください。ちょっと紛らわしいので追加します。

PPS: 特大の画像で申し訳ありません。私は Retina 画面を使用しています。

于 2015-08-07T09:32:16.393 に答える
5

配置したセルに UISwitch をドラッグするだけです。その後、アシスタント エディター (素晴らしい) を使用して、親クラスに接続できます。1 つのヒントをお伝えします。外観が似ている複数のセルを計画している場合は、セクションの最初のセルを作成して適切にレイアウトします。その後、そのセクションの行数を増やすことができ、IB がコピーを作成します。あなたのための既存の行の。

于 2012-05-29T11:30:30.393 に答える
2

私はこの場合のために関数を作成し、それは私にとって良い仕事です..試してみてください.最初にセルの作成で、たとえば、追加したい行を確認できますUISwitch.

 if(indexPath.row == 0)
      [self createOnOffView:cell withTitle:@"Somthing"  withTag:1001 defaultVal:YES];

そして機能は次のとおりです。

- (void) createOnOffView:(UITableViewCell*) cell withTitle:(NSString*) title withTag:(int)tag defaultVal:(BOOL) defaultVal
{
    CGRect rect;

    cell.textLabel.text = title;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    rect = cell.contentView.frame;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        rect.origin.x = cell.frame.size.width - 20;
    else
        rect.origin.x = rect.size.width/2 +35;

    rect.origin.y = rect.size.height/2 - 15;    
    rect.size.width = 60;    

    UISwitch *switchView = [[UISwitch alloc] initWithFrame:rect];
    [cell.contentView addSubview:switchView];
    [switchView addTarget:self action:@selector(didChangeSwitch:) forControlEvents:UIControlEventValueChanged];

    switchView.tag = tag;

    [switchView setOn:defaultVal];

    [switchView release];
}

そして、値がスイッチである場合、このメソッドが起動されます..そのため、タグに基づいてどのスイッチかを知ることができます

- (void) didChangeSwitch:(UISwitch*)switchView
{
    if(switchView.tag == 1001)
    {
       //Do Somthing
    }

    if(switchView.tag == 1002)
    {
        //Do Somthing
    }    
}

これが役立つことを願っています:)

于 2012-05-29T12:32:43.047 に答える
0

リンク先の質問とまったく同じ方法で行います。「動的」テーブルなどというものはありません。テーブルにはモデルが表示されるだけです。モデルは動的かもしれませんが、テーブルビューはそうではありません。いずれにせよ、その質問に対する答えに従うと、テーブルビューにスイッチが表示されます。

于 2012-05-29T11:31:38.503 に答える