0

sectionIndexTitlesがあり、セルにアクセサリボタンがあるUITableViewを開発しようとしています。

問題は、インデックスタイトルのスクロールバーがセルの幅を狭めるため、アクセサリボタンが見苦しい位置にあることです...

ボタンをセル内にある左に少し動かすことはできますか?

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.text = @"text";
    }

    return cell;
}

ご覧のとおり、私はセルなどを操作していません。

そしてここであなたは結果を見ることができます:

http://i.stack.imgur.com/3AB89.jpg

4

1 に答える 1

1

デフォルトのaccessoryViewを移動する方法はありますが、かなりハックです。そのため、新しい SDK が到着すると、ある日動作しなくなる可能性があります。

自己責任で使用してください (このコード スニペットは、任意の accessoriesView を 8 ピクセル左に移動し、目的の uitableviewcell サブクラスの -(void)layoutSubviews メソッド内に挿入します):

if (self.accessoryView) {
    r = self.accessoryView.frame;
    r.origin.x -= 8;
    self.accessoryView.frame = r;
} else {
    UIView* defaultAccessoryView = nil;
    for (UIView* subview in self.subviews) {
        if (subview != self.textLabel && 
            subview != self.detailTextLabel && 
            subview != self.backgroundView && 
            subview != self.contentView &&
            subview != self.selectedBackgroundView &&
            subview != self.imageView) {
            defaultAccessoryView = subview;
            break;
        }
    }
    r = defaultAccessoryView.frame;
    r.origin.x -= 8;
    defaultAccessoryView.frame = r;
}
于 2012-06-13T17:11:02.040 に答える