我正在尝试创建好友请求功能。所有朋友请求都会显示在表格中,玩家可以点击接受或拒绝。我想要做的是在这个UITableView旁边创建一个包含所有玩家朋友请求的接受按钮。
这是我的代码。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *notificationCell = [tableView dequeuREusableCellWithIdentifier@"notificationCell" for IndexPath:indexPath];
NSArray *friendRequests = [self fetchAllFriendRequestsInArray];
NSManagedObject *friendRequestingRelationship = [friendRequests objectAtIndex:indexPath.row];
notificationCell.textLabel.text = [friendRequestingRelationship valueForKey:@"name"];
UIButton *acceptButton = [UiButton buttonWithType:UIButtonTypeSystem];
[acceptButton.frame = CGRectMake(notificationCell.frame.origin.x + 150, notificationcell.frame.origin.y -20, 80, 40);
[acceptButton setTitle:@"Accept" forState:UIControlStateNormal];
acceptButton.backgroundColor = [UIColor clearColor];
[acceptButton addTarget:self action:@selector(acceptButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[notificationCell.contentView addSubview:acceptButton];
return notificationCell;
}
只有第一个notificationCell显示了friendrequester的名字和Accept Button。其他通知细胞只显示其他朋友请求者'没有按钮的名字。我可以知道我的代码有什么问题,以便我可以让按钮显示在每个单元格上吗?
提前谢谢!
答案 0 :(得分:1)
按钮在那里,但它们会从视图中剪切掉。这条线是罪魁祸首:
acceptButton.frame = CGRectMake(notificationCell.frame.origin.x + 150, notificationcell.frame.origin.y -20, 80, 40);
您不应该将notificationCell
的来源添加到按钮,因为子视图位置与其超级视图的位置相关。
这应该会给你正确的外观,但你的代码还有其他潜在的问题。
使用已有按钮的原型单元格可能会更好。除了添加和删除该按钮,您可以根据上下文使现有的按钮可见或不可见。
答案 1 :(得分:0)
这是解决此问题的一种不好的方法。你应该去故事板,然后在原型单元格中放一个按钮。然后选择该按钮,转到属性检查器,并设置"标记"你可以选择一些(例如我们会说1)。然后,您可以在抓住单元格后获取每个单元格的按钮:
UIButton * acceptButton = (UIButton *)[cell viewWithTag: 1];
[acceptButton addTarget:self action:@selector(acceptButtonPressed) forControlEvents:UIControlEventTouchUpInside];
这更干净,可以为您提供所需的结果。