Каждый раз, когда вы звоните [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 448, 66)]
, вы создаете новую память, не обращаясь к существующей памяти.
Итак, вам нужно что-то вроде
if(!backTopLabel)
backTopLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 448, 66)];
так что вы создаете память, только если она не существует.
Однако, так как ваш ярлык не является собственностью, вы в любом случае теряете к нему доступ.
Поэтому вам нужно либо добавить метку как свойство класса, в котором вы находитесь, ИЛИ пометить представление, чтобы вы могли найти его снова и удалить.
Пометьте это и найдите снова так:
for(UIView* labelView in btnBackLeftCard.subviews)
{
if(labelView.tag = 100)
[labelView removeFromSuperView];
}
UILabel *backTopLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 448, 66)];
backTopLabel.backgroundColor = [UIColor clearColor];
backTopLabel.textColor = [UIColor whiteColor];
backTopLabel.font = [UIFont fontWithName:@"Georgia" size:56];
backTopLabel.textAlignment = UITextAlignmentCenter;
//here is where you tag the view, so you can find it again
backTopLabel.view.tag = 100;
backTopLabel.text = [[selectedUsers objectAtIndex:userIndex] valueForKey:@"FirstName"];
[btnBackLeftCard addSubview:backTopLabel]; // btnBackLeftCard is the UIButton
[backTopLabel release];