简体   繁体   English

iPhone SDK:TableView中的自定义按钮

[英]iPhone SDK: custom buttons in TableView

I'm using custom buttons in Table view and it works good for me: 我在表格视图中使用自定义按钮,它对我很有用:

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

     UIImage *detailsButtonImage;
     UIButton *detailsButton;

     NSString *CellIdentifier = @"Cell";

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

     //populate cells with array elements
     cell.textLabel.text = [itemsArray objectAtIndex:indexPath.row];

     //a custom button
     detailsButton = [UIButton buttonWithType:UIButtonTypeCustom];
     detailsButtonImage = [UIImage imageNamed:@"details.png"];
     [detailsButton setBackgroundImage:detailsButtonImage forState:UIControlStateNormal];
     detailsButton.frame = CGRectMake(275, 10, 20, 22);

      //which cell was tapped?
     [detailsButton setTag:[itemsArray objectAtIndex:indexPath.row]];
     [detailsButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
     [cell.contentView addSubview:detailsButton];
      return cell;
 }

//showing details of selected item
- (void) showDetails:(id)sender
{  
    AnotherViewController *anotherViewController = [[AnotherViewController alloc] init];
    anotherViewController.title = [sender tag];
    anotherViewController.itemDescription = [itemsDescriptions objectAtIndex:[itemsArray indexOfObjectIdenticalTo:[sender tag]]]; 

    [self.navigationController pushViewController:anotherViewController animated:YES];
    [anotherViewController release];
}

I'm curious if there is another way of sending a cell identifier to AnotherViewController except setting a tag. 我很好奇是否除了设置标签外还有另一种将单元格标识符发送到AnotherViewController的方法。

It looks like you are want showDetails to know which button pushed it. 看来您想让showDetails知道是哪个按钮按下了它。 I think the way you are doing it is fine, but if you wanted you could have a function 我认为您的操作方式很好,但是如果您希望可以使用某个功能

  • (void) showDetails:(id)sender withObject:(id)object; (void)showDetails:(id)sender withObject:(id)object;

and call that with your button rather than just showDetails:(id)sender; 并使用您的按钮调用它,而不仅仅是showDetails:(id)sender; I am inferring that your objects are strings from what you are doing, so it could be 我推断您的对象是您正在执行的操作的字符串,因此可能是

  • (void) showDetails:(id)sender withString:(NSString *)string; (void)showDetails:(id)sender withString:(NSString *)string;

But honestly the way you are doing it right now is fine, why change? 但是说实话,您现在的做法很好,为什么要更改?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM