Ios 未在UI表视图单元格中选择正确的对象
当按下“发送”按钮时,表格视图中显示了一个用户数组,该单元格没有选择正确的对象。可以随机退出:)。如何使选定单元格上显示的对象发送 这就是我发送信息的方式Ios 未在UI表视图单元格中选择正确的对象,ios,uitableview,parse-platform,Ios,Uitableview,Parse Platform,当按下“发送”按钮时,表格视图中显示了一个用户数组,该单元格没有选择正确的对象。可以随机退出:)。如何使选定单元格上显示的对象发送 这就是我发送信息的方式 - (void)sendMessage:(id)sender { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; PFObject *object = [self.objects objectAtIndex:indexPath.row
- (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;
}
这很容易。Tableview本身提供方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
variable=[array objectAtIndex:indexPath.row];
}
在“变量”中,您有选择的值。如果可以在整个控制器中访问数组,则可以保存“indexPath.row”并使用发送按钮的单击事件来获取所选记录。
tableView indexPathForSelectedCell
不会为您提供单元格中按钮的操作方法所需的索引路径。未选择单元格-您按了按钮
要获取该按钮行的索引路径,有两种不同的方法
我的首选方法是遍历视图层次结构,找到包含按钮的单元格,并使用该单元格获取索引路径。有关更多信息,请参见此问题:
我对这个问题的回答如下。您可以将这两个方法添加到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];
您不需要为按钮设置标记来获取索引。您只需使用以下代码即可获得:
- (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"];
}
显示你的CellforRowatindexpath你在哪里做这件事?@JayGajjar我现在编辑我的问题!Thanks@JoeFryer我现在编辑我的问题!谢谢我更新了我的问题,你们可以看到我在我的手机里使用了一个按钮。有必要添加按钮吗?若您并没有使用该按钮,那个么在选择行时,它将调用方法,您可以在其中写入发送消息代码,甚至可以在选择表单元格行时调用发送消息方法。-(void)tableView:(UITableView*)tableView DidSelectRowatineXpath:(NSIndexPath*)indexPath{variable=[array objectAtIndex:indexPath.row];//这里调用方法你想要什么}谢谢,我现在用图片更新了我的问题。也许我想做什么更容易理解?再次感谢汉克斯。嗯,还是不行。在动态表视图中,所有内容都位于同一单元格中。查看更新问题中的图像。这是一个名为“图像上的按钮”的按钮,它需要工作。非常感谢,但还没有工作。问题可能是按钮在图像旁边吗?另一种解决方案是使用具有不同单元格的静态表视图,还是在最后滚动到下一个用户时也会出现问题?我用一张图片更新了我的问题,这样也许会有帮助?