2012-05-29 2 views
6

私はこの質問を見た:スタティックUITableViewにUISwitchを埋め込むにはどうしたらいいですか?

UISwitch in a UITableView cell

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

答えて

5

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

+0

静的テレビは、これを簡単にパイにします。 :) – lnafziger

+7

ストーリーボード中に静的なUITableViewCellにUISwitch要素をドラッグするには、セルがスタイル「カスタム」でなければならないことに注意してください。 – Archie1986

+0

@ Archie1986強制的に「基本」セルにも機能します。 –

0

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

+0

これは正しくありません。 iOS 5以降では、データソースを必要としないスタティックセルテーブルビューがありますが、ダイナミックプロトタイプセルにはある種のデータソースが必要です。 –

+0

十分に公正。それを知らなかった。 docを読み込んだら、cellForRowAtIndexPathを使用する方が簡単です。 – sosborn

+2

私の編集した答えのビデオリンクを参照してください、私はあなたがSCテレビにオブジェクトを追加することがどれほど簡単であるかについてあなたの心を変えてくれると思います。 –

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 
    }  
} 

これは役に立ちます。

+1

これは、Interface Builderを使用したいセルにスイッチをドラッグするだけで簡単に行えることはありません。静的セルの表がどのように機能するかを見てみましょう。これらのメソッドを使用する場合、データソースメソッドは必要ありません。通常のV​​iewControllerのようなオブジェクトのIBActionsを接続するだけです。 –

15

これは、Interface Builderでどのように動作するかです。コードは不要です。

  • UISwitchをView Controllerにドラッグします。それは メインビューの外にある必要があります。キンダーはちょうどそこにいくつかの他のものでチリ '。

  • このスイッチが必要なテーブルビューセルをCtrl-クリックし、 新しいスイッチにドラッグします。 1を参照してください。 enter image description here

  • スイッチをテーブルビューのセルのアクセサリービューアウトレットに接続します。 2を参照してください。 enter image description here

アプリを実行して、スイッチを見て、テーブルに表示されます - やりました!

注:スイッチはインターフェイスビルダーには表示されません。しかし、アプリケーションを実行すると表示されます

インスタンス変数に接続したい場合(たとえば、後でその "on"プロパティを読むことができるように)、あなたのようにコンセントに接続します他のビュー34

enter image description here enter image description here

PS:UISwitchのオン/オフ状態は、そのプロパティ "の"、 "選択" ではないであることに留意してください。私はちょっと混乱しているので、これを追加しています。

PPS:特大の画像のため申し訳ありませんが、私は網膜の画面にいます。

+0

これは有望です..しかし、2番目のステップの後に、これは 'これはスイッチがテーブルに表示されます - 完了!'私はテーブルにスイッチが表示されない部分があります。暗いポップアップOutlets - accessoryViewが表示されているのを見て、私が正しく手順をたどっていることを確信しています。どんな手掛かり? – Bruce

+0

アプリをうまく実行する - スイッチが表示されますか? Interface Builderに表示されないことに気づいたばかりです。しかし、それはあなたがアプリを実行すると、セルになります。それを試してみてくださいそれがあなたのために働くと、私はその上の文言を更新します。 – n13

+0

あなたは正しいです、私はそれが欲しい場所にちょうど現れます。驚くばかり!私はまた、スイッチをフックするたびにコードを実行するようにスイッチをフックする方法も考えています。すべてのポインタ? – Bruce

関連する問題