开发者

tableview cell value

I am making an iphone application. In one of the view of the application I have implemented the table view. On each table view cell I have put one or two buttons. Now I want that whenever I click the button it give me the value of cell. How can I do it if anybody has an idea about this please let me know.

The code which I have implemented to display the button is:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [rangetime objectAtIndex:indexPath.row];
    NSString *checkstatus = [finalstatusarray objectAtIndex:indexPath.row];
    if ([checkstatus isEqualToString:@"YES" ])
    {
        UIButton *submitbutton1 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton1.tag=1;
        submitbutton1.frame = CGRectMake(200, 4, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"yes.png"];
        [submitbutton1 setImage:btnImage1 forState:UIControlStateNormal];
        cell.accessoryView = submitbutton1;
        [submitbutton1 addTarget:self action:@selector(updatestatus) forControlEvents:UIControlEventTouchUpInside];
    }
    else if ([checkstatus isEqualToString:@"NO" ])
    {
        UIButton *submitbutton2 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton2.tag = 2;
        submitbutton2.frame = CGRectMake(200, 4, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"no.png"];
        [submitbutton2 setImage:btnImage1 forState:UIControlStateNormal];
        [submitbutton2 addTarget:self action:@selector(updatestatus) forControlEvents:UIControlEventTouchUpInside];
        cell.accessoryView = submitbutton2;

    }
    else if ([checkstatus isEqualToString:@"s" ])       
    {
        UIButton *submitbutton1 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton1.tag = 1;
        submitbutton1.frame = CGRectMake(255, 5, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"no.png"];
        [submitbutton1 setImage:btnImage1 forState:UIControlStateNormal];
        [cell  addSubview:submitbutton1];// = submitbutton1;
        [submitbutton1 addTarget:self action:@selector(updatestatus) forControlEvents:UIControlEventTouchUpInside];

        UIButton *submitbutton2 = [UIButton buttonWithType:UIB开发者_开发知识库uttonTypeCustom];
        submitbutton2.tag = 2;
        submitbutton2.frame = CGRectMake(285, 5, 28, 29); 
        UIImage * btnImage2 = [UIImage imageNamed:@"yes.png"];
        [submitbutton2 setImage:btnImage2 forState:UIControlStateNormal];
        [cell  addSubview:submitbutton2];
        [submitbutton2 addTarget:self action:@selector(updatestatus) forControlEvents:UIControlEventTouchUpInside];
    }
    return cell;
}

tableview cell value

Thanku very much.


You can do with the help of following code.

I had edited your answer in target method of UIButton and added event as argument so you can get indexPath of the row.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [rangetime objectAtIndex:indexPath.row];
    NSString *checkstatus = [finalstatusarray objectAtIndex:indexPath.row];
    if ([checkstatus isEqualToString:@"YES" ])
    {
        UIButton *submitbutton1 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton1.tag=1;
        submitbutton1.frame = CGRectMake(200, 4, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"yes.png"];
        [submitbutton1 setImage:btnImage1 forState:UIControlStateNormal];
        cell.accessoryView = submitbutton1;
        [submitbutton1 addTarget:self action:@selector(updatestatus:event:) forControlEvents:UIControlEventTouchUpInside];
    }
    else if ([checkstatus isEqualToString:@"NO" ])
    {
        UIButton *submitbutton2 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton2.tag = 2;
        submitbutton2.frame = CGRectMake(200, 4, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"no.png"];
        [submitbutton2 setImage:btnImage1 forState:UIControlStateNormal];
        [submitbutton2 addTarget:self action:@selector(updatestatus:event:) forControlEvents:UIControlEventTouchUpInside];
        cell.accessoryView = submitbutton2;

    }
    else if ([checkstatus isEqualToString:@"s" ])       
    {
        UIButton *submitbutton1 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton1.tag = 1;
        submitbutton1.frame = CGRectMake(255, 5, 28, 29); 
        UIImage * btnImage1 = [UIImage imageNamed:@"no.png"];
        [submitbutton1 setImage:btnImage1 forState:UIControlStateNormal];
        [cell  addSubview:submitbutton1];// = submitbutton1;
        [submitbutton1 addTarget:self action:@selector(updatestatus:event:) forControlEvents:UIControlEventTouchUpInside];

        UIButton *submitbutton2 = [UIButton buttonWithType:UIButtonTypeCustom];
        submitbutton2.tag = 2;
        submitbutton2.frame = CGRectMake(285, 5, 28, 29); 
        UIImage * btnImage2 = [UIImage imageNamed:@"yes.png"];
        [submitbutton2 setImage:btnImage2 forState:UIControlStateNormal];
        [cell  addSubview:submitbutton2];
        [submitbutton2 addTarget:self action:@selector(updatestatus:event:) forControlEvents:UIControlEventTouchUpInside];
    }
    return cell;
}

- (void)updatestatus:(id)sender event:(UIEvent *)event
{

   NSIndexPath *indexPath = [tblCityList indexPathForRowAtPoint:[[[event   
      touchesForView:sender] anyObject] locationInView:YourTableName]];

   **Now You can access the row value with the help of indexPath.row**
}


First of all, you have to modify the below code...

    [submitbutton1 addTarget:self action:@selector(updatestatus:) forControlEvents:UIControlEventTouchUpInside];

Instead of,

    [submitbutton1 addTarget:self action:@selector(updatestatus) forControlEvents:UIControlEventTouchUpInside];

And write the following code in updatestatus:

    - (IBAction) updatestatus:(id)sender
    {
        UIButton *btn = (UIButton*) sender;
        UITableViewCell *cellSelected = (UITableViewCell*) [btn superview];
        NSIndexPath *idxPath = [tableView indexPathForCell:cell];
        // Your code...
    }


Have the following code

 -(void)showCellValue:(UIControl *)button{

UITableViewCell *cell = (UITableViewCell*)button.superview;
NSIndexPath *indexPath =[aTableView indexPathForCell:cell];
NSLog(@"The cell value is %@",[tableData objectAtIndex:indexPath.row]);

}

Assign this method showCellValue to the selector of the button. tableData is the array from which u load the data to the table. And in ur case it s rangeTime array Hope this helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜