我最初在 UITableView
中选择多行的问题已在 this 中得到解答。问题。但这个答案让我无法继续下去,因为我对 Objective C 和 iOS 开发非常陌生。
正在关注 daxnitro的回答,我想实现他/她建议的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView indexPathIsSelected:indexPath]) {
[tableView removeIndexPathFromSelection:indexPath];
} else {
[tableView addIndexPathToSelection:indexPath];
}
// Update the cell's appearance somewhere here
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
我仍然需要这些方法,我想我可以为 indexPathIsSelected
(例如)执行此操作,如下所示:
@interface MyTableViewController ()
- (BOOL)indexPathIsSelected:(NSIndexPath *)indexPath;
@end
@implementation MyTableViewController
// ...
- (BOOL)indexPathIsSelected:(NSIndexPath *)indexPath
{
BOOL bIsSelected = NO;
// ...
return bIsSelected;
}
@end
但这行不通。错误消息是:没有可见的 @interface for 'UITableView' 声明选择器 'indexPathIsSelected:' 注意:如果我在 .h 文件的接口(interface)中声明该方法,也会发生同样的情况。
现在,让我困惑的是:[tableView indexPathIsSelected:indexPath]
以某种方式在 tableView
对象上调用,我什至不知道为什么。这是我在方法声明/定义中必须考虑的事情吗?我现在觉得自己真的很愚蠢,我什至无法通过查看其调用来编写方法。
如何正确定义和声明方法indexPathIsSelected
,以便我可以正确使用它?
最佳答案
在您的didSelectRowAtIndexPath
中,变量tableView
是一个UITableView
。
您对 indexPathIsSelected
的实现位于类 MyTableViewController
中,它可能是一个 UITableViewController
。
UITableViewController
和 UITableView
是不同的类。
所以你在UITableView
上找不到方法indexPathIsSelected
,因为它没有在那里实现,它是在MyTableViewController
上实现的,这是一个不同的类.
所以...我将进行有根据的猜测,并假设 didSelectRowAtIndexPath
是 MyTableViewController
类的一部分。如果是这样的话,那么
[self indexPathIsSelected:indexPath]
可能是答案(即在 self
中调用 indexPathIsSelected
而不是 TableView )。
关于ios - Objective-C:如何声明/定义 tableView 上使用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436851/