我在Stack Overflow上读到了一些类似的问题,但没有一个有令人满意的答案。
我想要实现的是设置屏幕上的“Facebook登录按钮”。
我想使用静态单元格实现此目的。 但我很快发现我无法使用Xcode将“Action”连接到UITableViewCell。
然后我尝试使用带有UIButton的Custom UITableViewCell来获得相同的结果,但是它导致了很多额外的样式问题,使它看起来像真正的UITableViewCell。
现在我设法使用以下解决方案使UITableViewCell像Button一样:
我将“登录按钮”UITableViewCell的标识符更改为“loginButton”。我将以下代码添加到表视图控制器。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([[selectedCell reuseIdentifier] isEqualToString:@"loginButton"]) {
NSLog(@"Clicked");
// Execute function to run code for Login button
}
}
而不是执行IBAction(如果我可以将它像Xcode中的按钮一样链接就是这种情况),我现在要执行一个函数。
这与预期的一样。但我提出这个问题的原因是:我想知道这是否是正确的方法。这个可以吗?这不好吗?为什么这样好还是坏?有更好的解决方案吗?谢谢!
答案 0 :(得分:7)
这是一个合理的方式。
使用索引路径的类似解决方案是:
从IB创建表格视图单元格的出口。
@property (strong, nonatomic) IBOutlet UITableViewCell *loginButtonCell;
然后实现didSelectRowAtIndexPath:方法。
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath isEqual:[tableView indexPathForCell:self.loginButtonCell]])
{
// This will get called when you cell button is tapped
}
}
然后您可以重新订购而无需修改代码