1

iOS 5.1 Simulatorアプリでの作業中は素晴らしい気分でしたが、iOS 4.3 Simulatorでテストした後、ある種の理解できない問題が発生しました。

UITableViewにカスタムUITableViewCellを使用していますが、UILabelがほとんどなくUITextViewが1つあります。問題は、textColorプロパティがまったく機能していないように見えることです。背景が表示され、NSLogが正しいテキストを印刷しているにもかかわらず、ラベルのすべてのテキストが非表示のままになっています。IBとプログラムの両方でtextColor値を変更しようとしましたが、どちらも役に立ちませんでした。

UITextViewはどうですか?それは大丈夫です。すべてのラベルをtextViewsに置き換えることはできると思いますが、プログラミングの良い方法ではありませんか?

それは私の心を吹き飛ばすだけなので、私はあなたのどんな種類の助けにも終わりがないことに感謝します!

更新(ソースコードを追加)

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    FeedItemCell *cell = [tableView dequeueReusableCellWithIdentifier:[FeedItemCell cellID]];
    if (!cell) {
        cell = [FeedItemCell cell];
    }

    NSIndexPath *selectedPath = [tableView indexPathForSelectedRow];
    if (selectedPath && (indexPath.row == selectedPath.row) ) {
        [self selectRowAtIndexPath:indexPath];
    }

    [cell fillWithContents:[feedItemsController.fetchedObjects objectAtIndex:indexPath.row]];
    return cell;
}

//---
@implementation FeedItemCell 

- (void)fillWithNewsItemContents:(FeedItem *)feedItem {
    self.nameLabel.text = [feedItem.creator fullName];
    self.dateLabel.text = [TimeFormatter newsTimeWithDate:feedItem.postedDate];
    self.detailTextView.text = [FeedItemCell detailTextViewStringFromFeedItem:feedItem];
    self.commentLabel.text = [self _commentsTitleWithNews:feedItem];
    self.avatarImageView.image = [feedItem.creator avatar];
}

すべてのUILabelsはxib-file で定義されていますここに画像の説明を入力してください

4

3 に答える 3

1

解決策を見つけたようです。何らかの理由UILabelで、iOS 4.3 の Helvetica Neue フォントをサポートしていません (実際にはサポートしているにもかかわらずUITextView)。他の test UILabels を追加し、成功した後、新しいものと古いものの違いを見つけようとしていることに気づきました。

したがって、別の適切なフォントを選択するだけです:)

意味もなくご迷惑をおかけして申し訳ありません。

于 2012-08-01T10:55:42.117 に答える
0

あなたのコードを見るのは本当に素晴らしいことです-特に、私は見たいです:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath

または、他の場所でこれらの不正な動作を割り当て、インスタンス化し、サブビューとして追加しますUILabel。しかし、何がうまくいかないかについて、いくつか推測することができます。

  • UILabel適切に割り当てまたはインスタンス化される前に、前の要素を設定しようとしている可能性があります。これは、たとえば、次のように呼び出すと発生する可能性があります。

    [myLabel setText:@"Hello"];
    

    電話をかける前に:

    UILabel *myLabel = [[UILabel alloc] initWithFrame:someFrame];
    

    そのようなことをすると、正常にコンパイルされ、実行時にサイレントに失敗します。

  • UIViewラベルを適切に追加するのを忘れている可能性があります。UITableViewCellでは、コンテンツは通常、セルのcontentViewプロパティのサブビューとして追加する必要があります。

    [[myCell contentView] addSubview:myLabel];
    

他にも起こりうることがいくつかありますが、盲目的に推測する前に、使用しているコードを確認したいと思います。それでは答えを更新します。

于 2012-07-31T17:25:05.600 に答える
0

これは非常に奇妙です。ただし、実際の iOS 4.3 および 5.1 デバイスでテストすることをお勧めします。シミュレーターは 100% ではなく 95% 正確です。そのため、デバイスで健全性チェックを行う必要があります。

于 2012-07-31T17:08:09.923 に答える