2

QuickDialogフォームのUITableViewCellのプロパティにアクセスしようとしています。

具体的には、作成したオブジェクトのプロパティリストに「非表示」になっているQEntryElement(QDateTimeInlineElement)のaccessoryViewプロパティにアクセスしようとしています。

を使用してセルにアクセスしようとしています

    UITableViewCell *thisCell = [dateelement getCellForTableView:self.quickDialogTableView controller:self];

しかし、何らかの理由で何も表示されません。次のように、UIButtonを挿入しようとしています。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"=" forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, 24, 24);

次に、thisCell.accessoryView=ボタン;

間違った方法でプロパティにアクセスしていますか、それともボタンがまったく作成されていませんか?エラーは表示されませんが、accessoryViewは空です。

前もって感謝します

4

1 に答える 1

2

この問題は、あなたが求めているものに非常に近いように見えます。基本的に、最初に独自の方法を提供し、escozが提案する方法QuickDialogStyleProviderを実装する必要があります。cell:willAppearForElement:atIndexPath:

プロバイダーメソッドで呼び出しを取得すると、セルを完全に制御できます。セルがタイプQEntryTableViewCellであるかどうかを確認し、そうである場合は、そのタイプにキャストして、textFieldプロパティの色/フォントを変更できます。良い副作用は、ラジオボタン、日付/時刻フィールドなど、すべてのサブクラスの色も変更されることです。

だから、あなたの場合、あなたは次のようなことをするでしょう

- (void)viewDidLoad
{
    self.quickDialogTableView.styleProvider = self;
}

- (void)cell:(UITableViewCell *)cell willAppearForElement:(QElement *)element atIndexPath:(NSIndexPath *)indexPath
{
    if([cell isKindOfClass:[QDateTimeInlineElement class]])
    {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setTitle:@"=" forState:UIControlStateNormal];
        button.frame = CGRectMake(0, 0, 24, 24);

        cell.accessoryView = button;
    }
}

完全に正しくない場合は申し訳ありませんが、現在Xcodeを使用していません。

于 2012-07-26T17:55:31.967 に答える