当按下单元格选择了正确对象的发送按钮时,我在表格视图中显示了一个用户数组。它可以随意退出:)。如何发送所选单元格上显示的对象?
这是我发送信息的方式
- (void)sendMessage:(id)sender {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
PFObject *object = [self.objects objectAtIndex:indexPath.row];
self.SendToUsername = [object objectForKey:@"username"];
self.SendToName = [object objectForKey:@"name"];
}
这是我的单元格,发送按钮位于此处。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object
{
static NSString *simpleTableIdentifier = @"LampCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
UIButton *sendbutton = (UIButton*) [cell viewWithTag:105];
[sendbutton addTarget:self action:@selector(sendMessage:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
答案 0 :(得分:0)
这很容易。 Tableview本身提供了方法。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
variable=[array objectAtIndex:indexPath.row];
}
In" Variable"你有选择的价值。如果您的阵列可以在整个控制器中访问,那么您可以保存" indexPath.row"并使用发送按钮的点击事件来获取所选记录。
答案 1 :(得分:0)
tableView indexPathForSelectedCell
不会为您提供单元格中按钮的操作方法所期望的索引路径。单元格未被选中 - 您触摸了按钮。
要获取该按钮的行的索引路径,有几种不同的方法。
我首选的方法是遍历视图层次结构以查找包含该按钮的单元格,并使用它来获取索引路径。有关详细信息,请参阅此问题:
Button in custom cell in dynamic table: how to know which row in action method?
我对这个问题的回答如下。您可以将这两种方法添加到UITableViewController
上的类别中,或者如果您愿意,也可以将它们添加到视图控制器中。
- (NSIndexPath *)indexPathForCellSubview:(UIView *)subview
{
if (subview) {
UITableViewCell *cell = [self tableViewCellForCellSubview:subview];
return [self.tableView indexPathForCell:cell];
}
return nil;
}
- (UITableViewCell *)tableViewCellForCellSubview:(UIView *)subview
{
if (subview) {
UIView *superView = subview.superview;
while (true) {
if (superView) {
if ([superView isKindOfClass:[UITableViewCell class]]) {
return (UITableViewCell *)superView;
}
superView = [superView superview];
} else {
return nil;
}
}
} else {
return nil;
}
}
然后您可以在按钮操作方法中获取索引路径,如下所示:
NSIndexPath *indexPath = [self indexPathForCellSubview:sender];
答案 2 :(得分:0)
您不需要为按钮设置标记以获取索引路径。您只需使用以下代码即可获得它:
- (void)sendMessage:(id)sender {
UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
NSIndexPath *clickedButtonIndexPath = [self.tableView indexPathForCell:clickedCell];
PFObject *object = [self.objects objectAtIndex:indexPath.row];
self.SendToUsername = [object objectForKey:@"username"];
self.SendToName = [object objectForKey:@"name"];
}