2009-08-24 13 views

答えて

0

は、Info here UITableViewCellの方法に

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

を使用してください。

+0

次のような方法が適していますか? http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableViewCell/setHighlighted:animated: –

+0

どのような方法ですか?リンクはどの特定の方法にも移動しません – Daniel

+1

もしあなたがそれを強調表示してそれを選択しないとすれば、すべての質問者がそれを望んでいるかどうか確信します。 – Daniel

6

この方法で行を選択すると、Apple suggests againstは「選択済み」状態を表示するため、この方法を使用することを賢明にしてください。

セルのaccessoryTypeプロパティをUITableViewCellAccessoryCheckmarkのように設定することを検討してください。

+0

アップルのUIを複製しようとしています。 /カレンダーアプリケーションでイベントを編集し、開始日と終了日時を設定します。チェックマークルールに関するコメントは他の場所でも見ましたが、この場合に適用されるかどうかは不明です(テーブルはデータのリストを表示するのではなくコンポーネントをレイアウトするために使用されます)。 – user119857

+0

これは興味深い点です。この場合、開始点と終了点は、どちらも同じ種類のデータを表し、同じ種類のUIPickerViewによって変更されているため、サブビューは必要ありません。それは賢明な使い方を表します。彼らはおそらくUITableViewのselectRowAtIndexPathを使用しています:アニメーション:scrollPosition:メソッド...参照してくださいhttp://tinyurl.com/yd9zs65 –

1

間違いなく注意してください。正当な理由があると確信していますが、Appleが提供するHuman Interface Guidelinesのドキュメントをよくお読みください。アプリケーションは、テーブル行を選択解除しないために拒否されます。私は、HIGの適切なセクションを見つけ、アップルが何か提案をしているのを見てください。

41
-(void)viewWillAppear:(BOOL)animated { 
    // assuming you had the table view wired to IBOutlet myTableView 
    // and that you wanted to select the first item in the first section 
    [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
          animated:NO 
         scrollPosition:UITableViewScrollPositionTop]; 
} 

私は、ユーザーがそれが影響するUIDatePickerテーブルビュー以下のどのセルを知っている2 UITableViewCellsのいずれかを選択するには、この技術を使用しています。この技術は、新しいイベントを作成して日付を設定するときに、カレンダーアプリでAppleによって使用されます。

+1

1.これは私のために動作しません。 2. Appleは、チェックマークを使用して項目の選択状態を示すべきだと言います。 –

3

viewWillAppearに入れてください。

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
         animated:NO 
        scrollPosition:0]; 

あなたはcellForRowAtIndexPath:でそれを選択しようとすると、それは、必要なスタイルを取ることはありません。

0

UIViewControllerにいない場合は、viewWillAppearがなく、プログラムによってUITableViewを作成することがあります。それは、細胞がまだ表示されていないので、cellForRowAtIndexPathでは動作しないのです

- (void)tableView:(UITableView *)tableView 
     willDisplayCell:(UITableViewCell *)cell 
     forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (self.selectedIndex == indexPath.row) { 
     cell.selected = YES; 
    } 
} 

簡単な解決策は、このdelegateメソッドを実装することです。 setSelectedメソッドは、このメソッドが表示されたときに呼び出されます。

1

使用このコードをテーブルビューにデフォルトでセルを選択するために、indexPathはあなたの必要性に応じて

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
関連する問題