2011-10-30 5 views
2

私は、iPhoneの連絡先アプリで住所を表すようなセルを作成する方法を理解するのに役立つ必要があります。私は住所を作成するつもりはない。私は、編集モードで次のように表示する方法を知っておく必要があります:カスタムに右手で左と右の iphoneコンタクトアドレスセルのようにUITableViewCellを作成するには?

  • コンテンツを分離

    1. (UITableViewCellStyleValue2のような)左のテキスト
    2. グレーラインをフォーマット - 私はここで何を提示しようとしているのかに応じて、さまざまな高さでフォーマットを変えます。

    サンプルコード、Appleの例(私は見つけられませんでしたが)、チュートリアル、または一般的なガイダンスは大歓迎です。私は、左側にあるすべてを処理し、右側に配置したいコンテンツに基づいて動的にサイズを変更するカスタムコンテナクラスを作成する必要がないようにしようとしています。確かに誰かがこれをすでにやっているのですよね? :)編集モードは、次のようになります

    :あなたはあなた自身のUITableVIewCellSubclassを作成する必要がContacts Address Edit

  • +0

    あなたの考えを破ることはできますか? – user501836

    答えて

    4

    、これはあなたが考えるほど難しいことではありません。

    基本的には、区切り文字の間に2つのUITextFieldとUIImageViewを追加するだけです。

    私はあなたが達成しようとしているものと非常に類似したコードサンプルを持っているAppleのテーブルビュー・プログラミング・ガイドを見てすることをアドバイスし、特にA Closer Look at Table-View Cells

    。このことができます

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    
        static NSString *CellIdentifier = @"ImageOnRightCell"; 
    
        UITextField*main, *second; 
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
        if (cell == nil) { 
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
         cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    
         main = [[[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 15.0)] autorelease]; 
         main.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight; 
         [cell.contentView addSubview:main]; 
    
         second = [[[UITextField alloc] initWithFrame:CGRectMake(220.0, 0.0, 220.0, 15.0)] autorelease]; 
         second.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight; 
         [cell.contentView addSubview:second]; 
    
        } 
    
        return cell; 
    } 
    

    希望、 ヴィンセント

    +0

    ええ、私は別のプロジェクトにいくつかのセルをサブクラス化しました。私はここでその道を歩かなければならないのではないかと心配しましたが、誰かが既に余分な仕事をしていることを望んでいました。 ;)私は本当に役立つように、自動サイズ変更を行っていません。 – thephatp

    +0

    私のために働いていません。 –

    1

    私はちょうどこのような何かをした:ここでの考え方(未テストコード)があります。私のソリューションは、私のデータにかなり特異的であったが、一般的にはこれは私がそれをやった方法です:

    1. 左側のテキストは右側がのUITableView
    2. 「123フェイク・ストリートである上下中央にUILabel
    3. です"は、コンテンツビューにスローされたUITextFieldを持つUITableViewCellサブクラスに入ります。
    4. "My City"と "ST"は、UITextFieldのスローされた単一のUITableViewCellサブクラスに入ります。実際に描画するボーダー(drawLeftBorder = YES)を制御できるUITextFieldSubclassを実行しました。
    5. サイズを変更するタイミングを決定する必要がありますが、基本的には右側に行を追加してから親テーブルビューのbegin/endUpdatesブロックを呼び出します。親テーブルビューはheightForRowAtIndexPathを実装し、データに基づいて正しい値を返すようにしてください。
    +0

    私はテーブルビューの使用を考えていませんでした。その細かい制御が必要な場合は理にかなっています。私は別のプロジェクトのコードを再利用できるので、別のルートに行くつもりですが、テーブルビューの考え方は面白いです。入力いただきありがとうございます。 – thephatp

    +0

    質問に表示されているスクリーンショットの国をクリックすると、その国を選択するための別のViewControllerが表示されます。具体的には、ユーザーがボタン、クリック可能なラベル、クリック可能なUIView、または...をタップするものですか? –

    +0

    これはUITableViewなので、デリゲートでは 'didSelectRowAtIndexPath'を実装するだけです。 – sosborn

    関連する問題