0

そのため、UITableVieCellサブクラスがそのオブジェクトに属するアイテムの数をユーザーに通知するメールアプリのような「単純な」何かをしようとしています。したがって、セルを取得したら、次のようにします。

if ([map.locations count] > 0) {
        UIView *locationsView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, LOCATIONS_VIEW_LENGTH, LOCATIONS_VIEW_LENGTH)]; // LOCATIONS_VIEW_LENGTH is 20.0
        locationsView.frame = CGRectMake((cell.contentView.frame.size.width - 45), (cell.contentView.frame.size.height - locationsView.frame.size.height) / 2, LOCATIONS_VIEW_LENGTH, LOCATIONS_VIEW_LENGTH);
        locationsView.layer.backgroundColor = [UIColor grayColor].CGColor;
        [locationsView.layer setCornerRadius:3];

        UIFont *arialFont = [UIFont systemFontOfSize:12.0];
        NSString *locationsText = [NSString stringWithFormat:@"%i", [map.locations count]];
        CGSize locationsLabelSize = [locationsText sizeWithFont:arialFont constrainedToSize:locationsView.frame.size lineBreakMode:UILineBreakModeTailTruncation];
        UILabel *numLocationsLabel = [[UILabel alloc] initWithFrame:CGRectMake((locationsView.frame.size.width - locationsLabelSize.width) / 2, (locationsView.frame.size.height - locationsLabelSize.height) / 2, locationsLabelSize.width, locationsLabelSize.height)];
        numLocationsLabel.text = locationsText;
        numLocationsLabel.textColor = [UIColor whiteColor];
        numLocationsLabel.font = arialFont;
        numLocationsLabel.backgroundColor = [UIColor clearColor];
        [locationsView addSubview:numLocationsLabel];

        [cell.contentView addSubview:locationsView];
    }

私はもともとこのコードをUITableViewCellのawakeFromNibメソッドに入れようとしましたが[map.locations count]、configureCellメソッドではそうではなかったとしても、常に0未満でした。理由はわかりませんが、いずれにせよ、cellForRowAtIndexPathメソッドでconfigureCellを呼び出すと、上記のコードが実行されます。それはかなりひどいように見えます。

スクレンショット: ここに画像の説明を入力してください

Appleは彼らのメールをとても素敵にするために何をしているのだろうか?ありがとう!

4

1 に答える 1

0

ソースコードも含まれているため、 simple-table-badgesリンクを参照してください。

リンクで@RedBlueThingの回答も参照してください

于 2012-08-28T05:23:22.793 に答える