目标C:删除对象时iPad中的网格视图问题

时间:2012-03-26 05:40:05

标签: objective-c ipad uibutton uilabel

我有一个视图,我在网格视图中显示图像和图像名称。如图所示。show image

现在同样我将一个UIButton与图像作为背景和UILabel并将其相应地定位在屏幕上。现在,当我按下UIButton时,它会显示UIActionSheet,其中包含删除,查看和取消选项。现在问题来了。当我只删除一条记录的删除时,该记录将被删除,但如果有更多的记录,则会在删除时显示已删除的记录。

添加UIButton和UILabel:

-(void)showImageFrame
{
    int FrameWidth = 190;
    int Frameheight = 196;
    int FrameX;
    int FrameY;

    int lblWidth = 190;
    int lblHeight = 40;
    int lblX,lblY;

    settButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [settButton setImage:[UIImage imageNamed:@"Picture frame.png"] forState:UIControlStateNormal];
    [settButton addTarget:self action:@selector(pressSelectedImage:) forControlEvents:UIControlEventTouchDown];

    btnInnerImg = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnInnerImg addTarget:self action:@selector(pressSelectedImage:) forControlEvents:UIControlEventTouchDown];

    lblImgName = [[UILabel alloc]init];
    lblImgName.font = [UIFont boldSystemFontOfSize:30];
    lblImgName.textAlignment = UITextAlignmentCenter;
    lblImgName.textColor = [UIColor whiteColor];
    lblImgName.backgroundColor = [UIColor clearColor];


        for(int i = 0;i<cnt1;i++)
        {
            [settButton setTag:i];
            img = [[appDelegate.DataArray objectAtIndex:i]valueForKey:@"ProfileImage"];

            [btnInnerImg setImage:img forState:UIControlStateNormal];
            [btnInnerImg setTag:i];

            lblImgName.text = [[appDelegate.DataArray objectAtIndex:i]valueForKey:@"strNameImg"];
            [lblImgName setTag:i];

            if(i==0)
            {
                FrameX = 35;FrameY = 119;btnX = 49;btnY=134;lblX = 35;lblY=337;
            }
            if(i==1)
            {
                FrameX = 289;FrameY = 119;btnX = 303;btnY=134;lblX = 289;lblY=337;
            }
            if(i==2)
            {
                FrameX = 545;FrameY = 119;lblX = 545;lblY=337;btnX = 558;btnY=134;
            }
            if(i==3)
            {
                FrameX = 802;FrameY = 119;lblX = 802;lblY=337;btnX = 816;btnY=134;
            }
            if(i==4)
            {
                FrameX = 35;FrameY = 411;lblX = 35;lblY=629;btnX = 49;btnY=426;
            }
            if(i==5)
            {
                FrameX = 289;FrameY = 411;lblX = 289;lblY=629;btnX = 303;btnY=426;
            }
            if(i==6)
            { 
                FrameX = 545;FrameY = 411;lblX = 545;lblY=629;btnX = 558;btnY=426;
            }
            if(i==7)
            {
                FrameX = 802;FrameY = 411;lblX = 802;lblY=629;btnX = 816;btnY=426;
            }

            [settButton setFrame:CGRectMake(FrameX,FrameY,FrameWidth,Frameheight)];
            [lblImgName setFrame:CGRectMake(lblX,lblY,lblWidth,lblHeight)];
            [btnInnerImg setFrame:CGRectMake(btnX,btnY,btnWidth,btnHeight)];

            [newButtonArray addObject:settButton];
            [self.view addSubview: settButton];     
            [self.view addSubview: lblImgName];     
            [self.view addSubview: btnInnerImg];
        }
}

删除UIButton和UILabel:

-(void)removeImageFrame
{
    [settButton removeFromSuperview];
    [btnInnerImg removeFromSuperview];
    [lblImgName removeFromSuperview];

    settButton = nil;
    btnInnerImg = nil;
    lblImgName = nil;        
}

我不想将UITableviewCell用于网格视图。我正在做的是删除1条记录,我删除所有记录并按照记录计数器重新加载它们。我知道我在removeImageFrame方法中做了一些错误,但无法找到相同的错误。希望有人可以帮我删除带有不同标签的单个UIButton。谢谢。

1 个答案:

答案 0 :(得分:1)

很高兴看到更多的上下文(操作方法以及按下按钮删除按钮的方式),但这里有一些建议:

  • 从showImageFrame
  • 开头删除按钮数组中的所有对象
  • 在循环内创建新按钮(使用本地声明的变量,而不是ivar)。
  • 请勿使用0的标记,即所有视图都具有的默认标记
  • 点击按钮时,尝试将其作为参数传递给removeImageFrame方法 - 这就是sender的用途。
  • 您还可以查看单个按钮的背景图像和前景图像,而不是看起来像一个按钮用于框架,一个用于图片
  • (与您的问题无关)尝试考虑一种比硬编码坐标更好的显示网格的方法。设备旋转的是什么?
相关问题