IOS UITableView“删除”按钮不会出现

时间:2012-12-21 14:59:35

标签: ios objective-c iphone uitableview button

我正在开发应用,用户可以使用附件创建帖子。对于附件,我使用UITableView并在viewDidLoad方法中以水平模式旋转它,如下所示:

// Rotates the view.
    CGAffineTransform transform = CGAffineTransformMakeRotation(-1.5707963);
    imageAttachmentTableView.transform = transform;

当用户从照片库中选择图像时,它们将被加载到UITableView的imageView中。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    CGAffineTransform transform = CGAffineTransformMakeRotation(1.5707963);
    cell.imageView.transform = transform;
    cell.imageView.frame = CGRectMake(0, 0, 110, 110);

    cell.imageVenter image description hereiew.image = [imageAttachments objectAtIndex:indexPath.row];
    return cell;                  
}

cell.imageView再次向相反方向旋转,以便图像在实际方向上可见

UITableView是在编辑模式下制作的,因此在加载图像时,也可以通过单击删除它们。

- (void)viewWillAppear:(BOOL)animated {
    [imageAttachmentTableView setEditing: YES animated: YES];
}

我还将默认的“删除”文字更改为“X”

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
    return @"X";
}

代码在纵向模式下完美运行,如下面的屏幕,当用户点击' - '按钮'X'出现时。

http://img5.imageshack.us/img5/1125/screenshot20121221at742.png

问题出现在横向模式下,会出现( - )按钮,但不会出现“X”按钮。 http://img833.imageshack.us/img833/6305/screenshot20121221at747.png

我已经尝试了所有可能的解决方案,但无法做任何坚持,请帮助

1 个答案:

答案 0 :(得分:1)

解决了! 问题是在横向模式下,UITableViewCell大小和删除按钮框架已更改,因此我将UITableViewCell与我的自定义类子类化。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    OMAttachmentCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[OMAttachmentCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    CGAffineTransform transform = CGAffineTransformMakeRotation(1.5707963);
    cell.imageView.transform = transform;
    cell.imageView.frame = CGRectMake(0, 0, 110, 110);

    cell.imageView.image = [imageAttachments objectAtIndex:indexPath.row];
    return cell;                  
}

在我的OMAttachmentCell课程中,我实施了以下方法。

-(void) willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];

    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {

        for (UIView *subview in self.subviews) {

            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                UIView *deleteButtonView = (UIView *)[subview.subviews objectAtIndex:0];
                CGRect f = deleteButtonView.frame;
                f.origin.x = 0;
                f.origin.y = 0;
                f.size.width = 30;
                f.size.height = 34;

                CGRect sf = self.frame;
                sf.size.width = 110;
                sf.size.height = 110;

                deleteButtonView.frame = f;
                self.frame = sf;
            }
        }
    }
}

这里我刚刚更新了删除按钮框架和TableCell大小。