У меня есть представление, где я показываю изображение и изображение в виде сетки. Как показано на изображении. Цель C: Grid View в iPad проблема при удалении объекта
Теперь для того же я беру один 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 с разными тегами. Спасибо.
Действительно ли это отображает сетку? Вы создаете одну кнопку, а затем изменяете ее свойства и повторно добавляете ее в супервизор. – jrturton
да, он отлично показывает. также, когда есть только одна запись, она удалена так же хорошо. Проблема возникает только тогда, когда есть больше одной записи. – Sarah
есть ли другой способ справиться с тем же ?? – Sarah