Iphone 分区UITableView中按钮的设置标签问题

Iphone 分区UITableView中按钮的设置标签问题,iphone,objective-c,iphone-sdk-3.0,Iphone,Objective C,Iphone Sdk 3.0,我在分区的tableview单元格中有两个按钮,向上和向下。最初,未选择两个按钮的图像。当我选择“拇指朝上”按钮时,其图像变为“拇指朝上”已选中,而另一个图像变为“拇指朝下”未选中,反之亦然 //Number of sections - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { NSLog(@"mod:numberOfSectionsInTableView"); NSLog(@"[pref

我在分区的tableview单元格中有两个按钮,向上和向下。最初,未选择两个按钮的图像。当我选择“拇指朝上”按钮时,其图像变为“拇指朝上”已选中,而另一个图像变为“拇指朝下”未选中,反之亦然

//Number of sections
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    NSLog(@"mod:numberOfSectionsInTableView");
    NSLog(@"[preferences count]=%d",[preferences count]);
    return  [preferences count];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.choices count];
}

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

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        NSLog(@"Text is: %@", [choices objectAtIndex:indexpath.row]);                   
        NSLog(@"CHOICE AT INDEX PATH IS: %@",[choices objectAtIndex:indexpath.row %[choices count]]);
        cell.textColor = [UIColor whiteColor];
        cell.backgroundColor = [UIColor blackColor];


        // Thumbs up button.
        //UIButton *thumbsUp = [[UIButton alloc]init];  
        thumbsUp = [UIButton buttonWithType:UIButtonTypeCustom];                        
        [thumbsUp setTag:(indexpath.row+(indexpath.section * 50))];
        [thumbsUp addTarget:self action:@selector(thumbUp_ButtonClicked:event:)
            forControlEvents:UIControlEventTouchUpInside];     
        [thumbsUp setTitle:@"" forState:UIControlStateNormal];
        thumbsUp.frame = CGRectMake(150.0, 20, 20, 15);
        [thumbsUp setBackgroundImage:[UIImage imageNamed:@"thumbsup_not_selected.png"]
     forState:UIControlStateNormal];

        //NSLog(@"------------------>TAG TEST : %d",(indexpath.row+(indexpath.section * 50)));
        [cell.contentView addSubview:thumbsUp];

        // Thumbs down button

        thumbsDown = [UIButton buttonWithType:UIButtonTypeCustom];
        [thumbsDown addTarget:self  action:@selector(thumbDown_ButtonClicked:event:)
            forControlEvents:UIControlEventTouchUpInside];
        [thumbsDown setTitle:@"" forState:UIControlStateNormal];
        thumbsDown.frame = CGRectMake(200, 20, 20, 15);

        [thumbsDown setTag:indexpath.row+120];
        [cell.contentView addSubview:thumbsDown];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];


        [thumbsDown setBackgroundImage:[UIImage imageNamed:@"thumbsdown_not_selected.png"]
            forState:UIControlStateNormal];
    }

    NSLog(@"------------> TAG TEST %d",thumbsUp.tag);
    cell.text = [choices objectAtIndex:(indexpath.row % [choices count])];


    NSLog(@"HELLO FOR TESTING");
    return cell;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) {
        return nil;
    }

    // Create label with section title
    UILabel *label = [[[UILabel alloc] init] autorelease];
    label.frame = CGRectMake(15, 10, 300, 25);
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor blackColor];
    label.shadowColor = [UIColor whiteColor];
    label.shadowOffset = CGSizeMake(0.0, 1.0);
    label.font = [UIFont boldSystemFontOfSize:16];
    label.textAlignment = UITextAlignmentLeft;
    label.text = sectionTitle;


    // Create header view and add label as a subview
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(12, 0, 300, 60)];
    [view autorelease];
    [view addSubview:label];
    //[view addSubview:segmentedControl];
    view.backgroundColor = [UIColor grayColor];
    return view;
}

//Thumbs Up Button Action

- (IBAction)thumbUp_ButtonClicked:(id)sender event:(id)event
{
    NSLog(@"Thumbs Up Check!");


    UIButton *button = (UIButton *)sender;
    UITableViewCell *cell = (UITableViewCell *) [[button superview] superview];


    NSIndexPath *indexPath = [myTable indexPathForCell:cell];
    NSLog(@"indexpath =%d",indexPath.row);
    //[button setTag:indexPath.row+(indexPath.section * 50)];

    int cTag = [sender tag];
    NSLog(@"------>TAG : %d", cTag);
    NSLog(@"------> Calculated TAG %d",indexPath.row+(indexPath.section * 50));
    if(cTag == (indexPath.row+(indexPath.section * 50)))
    {
        NSLog(@"BUTTON COUNT:");
        [button setBackgroundImage:[UIImage imageNamed:@"thumbsup_selected.png"]
            forState:UIControlStateNormal];
    }enter code here


    NSInteger section = indexPath.section;
    NSInteger row = indexPath.row;

    //int row = button.tag;

    NSLog(@"SECTION IS:%d",section);
    NSLog(@"ROW IS: %d",row);


    NSArray *array = cell.contentView.subviews;
    NSLog(@"NUMBER OF OBJECTS: %d",[array count]);
    UIButton *test = (UIButton *)[array objectAtIndex:2];

    [test setBackgroundImage:[UIImage imageNamed:@"thumbsdown_not_selected.png"]forState:UIControlStateNormal];

}
由于按钮标签问题,当我更改一个按钮的图像时,几个按钮正在更改

如果有人能找到解决办法,那将是很有帮助的。。。。标签是为我们可以查看的部分中的按钮设置的


如果Tableview没有分区,它会正常工作。

您的问题可能是,只有在新创建单元格时才设置变量。也许剖切对受影响的细胞数量有影响。尝试从if(cell==nil)块中拉出你的竖起/竖起代码,看看这是否有效果

谢谢你的回复。我尝试了上述解决方案。但问题是在滚动tableView时更改按钮的图像。。。。。