Праблема з кнопкай тэга секцыйнага UITableView

У мяне ёсць дзве кнопкі ўнутры секцыйнага TableView клетак пальцы ўверх і пальцы ўніз. Першапачаткова малюнак як кнопка ня абраная. Калі я выбіраю кнопку палец уверх яго малюнак становіцца няблага абраны і іншы адзін стаў thumbsdown не абраны, і наадварот.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    {
        enter code hereNSLog(@"mod:numberOfSectionsInTableView");
        NSLog(@"[preferences count]=%d",[preferences count]);
        return  [preferences count];
    }

    -(NSInteger)tableView:(UITableView *)tableView
    numberOfRowsInSection:(NSInteger)section
    {enter code here
        enter code herereturn [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];
        }


        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];

    }

З-за выпуск з тэгам кнопкі, калі я змяніць выява адной кнопкі некалькі кнопак змяняюцца. Калі які-небудзь можна, калі ласка, знайсці рашэнне будзе карысна ....

5
Што такое ваша пытанне?
дададзена аўтар Simon Lee, крыніца

1 адказы

Гэта звычайная з'ява звязана з тым, што выгляд табліцы клеткі перапрацаванай. Ваша схема з тэгамі кнопкі даволі заблытаная і схільная памылак.

Гэта мела б больш сэнсу, каб сачыць за станам Thumbsup/ўніз кожнага вочка ў мадэлі дадзеных datatsource вашага пункту гледжання табліцы. Тады, у cellForRowAtIndexPath: ўсталяваць кожную кнопку стану ў відавочным выглядзе.

ДАРЭЧЫ: cell.text і cell.textColor асуджаюцца. Вы павінны выкарыстоўваць ўласцівасці cell.textLabel .

1
дададзена
+1 для высвятлення праблемы з пытання :-)
дададзена аўтар Owen Hartnett, крыніца
Калі які-небудзь адзін можа даць код, калі ласка, каб выправіць гэтае пытанне будзе карысна. Праблема з устаноўкай пазнакі для кнопкі ...
дададзена аўтар Susha, крыніца