Странные вещи, происходящие с моим представлением таблицы - PullRequest
1 голос
/ 30 ноября 2011

У меня есть вид таблицы. Первоначально я использовал textLabel ячейки, чтобы справиться с этим, но это не сработало, поэтому я добавил UILabel в каждую ячейку программно, и у меня есть две кнопки: кнопка добавления и кнопка вычитания, которые в основном подсчитываются вверх или вниз при нажатии. (идет вверх или вниз на 1) Методы для двух кнопок:

 - (IBAction)addLabelText:(id)sender{    
   cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] +1];

}  

- (IBAction)subtractLabelText:(id)sender
{
    if ( [[cellLabel text] intValue] == 0){ 
        cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] +0];
    }
    else{
        cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] -1];
    }
}

когда я нажимал кнопки и добавлял несколько ячеек, кнопки мешали меткам друг друга. Поэтому я добавил эту строку кода для каждого из вышеуказанных методов. :

    cellLabel = (UILabel*)[sender superview];    

в надежде, что это решит проблему. Но это на самом деле добавил, я верю, что текстовые ячейки снова. Вот фотография того, как это выглядит до и после того, как я нажимаю одну из кнопок с добавленной новой строкой.

enter image description here

После того, как:

enter image description here

любая помощь в исправлении кнопок, мешающих друг другу ячейки UILabel, пожалуйста, помогите! : D Спасибо

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

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
     {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
         newBtn = [[UIButton alloc]init];
         newBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
         [newBtn setFrame:CGRectMake(280,10,25,55)];
         [newBtn addTarget:self action:@selector(subtractLabelText:) forControlEvents:UIControlEventTouchUpInside];
         [newBtn setTitle:@"-" forState:UIControlStateNormal];
         [newBtn setEnabled:YES];
         [cell addSubview:newBtn];

         subBtn = [[UIButton alloc]init];
         subBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
         [subBtn setFrame:CGRectMake(250,10,25,55)];
         [subBtn addTarget:self action:@selector(addLabelText:) forControlEvents:UIControlEventTouchUpInside];
         [subBtn setTitle:@"+" forState:UIControlStateNormal];
         [subBtn setEnabled:YES];
         [cell addSubview:subBtn];

         cellLabel = [[UILabel alloc]init];
         [cellLabel setFrame:CGRectMake(85, 22, 27, 27)];
         [cellLabel setText:@"1"];
         [cell addSubview:cellLabel];**
    } 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    cell.imageView.image = [imageArray objectAtIndex:indexPath.row];    
   // cell.textLabel.text = [cells objectAtIndex:indexPath.row];
    **if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle5.png"]]) {
        [cellLabel setFrame:CGRectMake (195, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle4.png"]]) {
        [cellLabel setFrame:CGRectMake (170, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle3.png"]]) {
        [cellLabel setFrame:CGRectMake (140, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle2.png"]]) {
        [cellLabel setFrame:CGRectMake (110, 22, 30, 30)];
    }**
return cell;
}

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

установить тег для ячейки, когда вы ее настраиваете: в моей таблице есть несколько разделов и несколько ячеек в каждом разделе. Итак, ячейки из первого (0) раздела имеют тег 0 ... 9999. со второго - 10000 ... 19999 и т. д. Я имею в виду тег ячейки = 10000 * номер раздела ПЛЮС число необработанных из этой ячейки в этом разделе. затем, чтобы вычислить, что именно является этой ячейкой, я вижу, сколько тегов 10000 имеет, чтобы вычислить, из какого он сечения, и сколько тегов> 10000 нужно вычислить из того, что это за сырье. Итак, у меня есть раздел и raw из моего представления таблицы.

cell.contentView.tag = indexPath.row+10000*indexPath.section; //or any you like
[cell.contentView addSubview:button]; //adding your button

затем при обратном вызове кнопки:

int row=0;
int section=0;
long tag = [sender superview].tag;
NSLog(@"tag: %ld", tag);
for (int i = 0; i<[data count]; i++) {
    if (tag>=10000) 
    {
        tag-=10000;
        section++;
    }
    else i = [data count];
}
row = tag;

NSIndexPath *indexPath = [[NSIndexPath alloc] initWithIndex:section];
indexPath = [indexPath indexPathByAddingIndex:row];
[tableView cellForRowAtIndexPath:indexPath];

Теперь у вас есть полный доступ к вашей камере. используйте рассчитанные raw и section и получите доступ к ячейке.

1 голос
/ 30 ноября 2011

[sender superview] возвращает суперпредставление вашего UIButton, то есть UITableViewCell, которое также имеет свойство text, поэтому ваш код по-прежнему работает нормально, даже если вы его неправильно произвели.

Покажите нам, как вы создаете и добавляете cellLabel, чтобы мы могли видеть, что с ним не так.

...