2012-02-24 7 views
0

のUITableView ...私はネイティブのカレンダーアプリと同様のUITableViewを作るしようとしている正しい方法

enter image description here

が、私はこれを行うための最善の方法を学ぶためにしようとしています。私はcellForRowAtIndexPathメソッドのswitch文を使ってこれを得ることができますが、セルが選択されたときにtextColorを変更する際に問題が発生しています。

何らかの理由で、cell.isSelectedが常にNOであり、とにかく別のセルが選択された後でテーブルビューをリロードする方法がありません。

私はこの単純なもののためにUITableViewCellをサブクラス化し、セルの配列を格納する必要がありますか?

ありがとうございます、ありがとうございます。

答えて

0

app doc委任機能に述べたように、サブクラスする必要は、ありません:あなた以下

は、その必要のあるいくつかのコードを見つける:

tableView:willSelectRowAtIndexPath: 

はトリック

EDITを行う必要がありますデリゲートを使用するアイディアを示します。私の現在のxcodeの前にいないので、このコードはテストされていないことに注意してください。

-(void)willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (prevIndexPath != nil) { 
     UITableViewCell* prevCell = [self.tableView cellForRowAtIndexPath: prevIndexPath]; 
     prevCell.textLabel.textColor = [UIColor black]; // your initial color here 
    } 

    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath: indexPath]; 
    cell.textLabel.textColor = [UIColor green]; 

    prevIndexPath = indexPath; 
} 

あなたのテーブルビューを管理し、あなたの制御クラスにUITableViewDelegateプロトコルを設定し、それにtableViews.delegateを設定してください。

このコードを実行するには、prevIndexPathという名前のプロパティまたは変数も定義する必要があります。これは、セルに元の色に戻すために必要な以前に選択されたセルを保持します。

+0

テーブルのすべてのセルのセルでカスタムUILabelsを変更するにはどうすればよいですか? – VTS12

+0

私の回答を更新しました –

+0

私が不明な場合は申し訳ありませんが、私はカスタムラベルのtextColorを変更しようとしています( "Start"と言うともう1つは "Thu、Feb 24、5:10 PM"と表示されます) 0とセル1の両方に表示されます。 – VTS12

関連する問題