[英]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
我认为您的操作方式很好,但是如果您希望可以使用某个功能
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
我推断您的对象是您正在执行的操作的字符串,因此可能是
But honestly the way you are doing it right now is fine, why change? 但是说实话,您现在的做法很好,为什么要更改?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.