ios - Objective-C:如何声明/定义 tableView 上使用的方法

标签 ios objective-c uitableview

我最初在 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

UITableViewControllerUITableView 是不同的类。

所以你在UITableView上找不到方法indexPathIsSelected,因为它没有在那里实现,它是在MyTableViewController上实现的,这是一个不同的类.

所以...我将进行有根据的猜测,并假设 didSelectRowAtIndexPathMyTableViewController 类的一部分。如果是这样的话,那么

[self indexPathIsSelected:indexPath]

可能是答案(即在 self 中调用 indexPathIsSelected 而不是 TableView )。

关于ios - Objective-C:如何声明/定义 tableView 上使用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436851/

相关文章:

ios - "Too many symbol files"成功提交我的应用程序后

objective-c - 如何通过编写 Objective-C 代码来动态更改 Interface Builder xib 文件?

iphone - 首次安装后,临时iPhone构建两次崩溃,但是没有问题

ios - 在 UITableView 上选择行时委托(delegate)不起作用

ios - 如何在不添加 subview 的情况下实现UITableview seperator 'above first row'

ios - 从操作内部访问队列

ios - Instruments,增加iPhone应用程序的分配

ios - UINavigationBar 后退按钮在某些设备或模拟器上显示 "Back"标题,在其他设备或模拟器上显示之前的 View Controller 标题

objective-c - NSTextField - 黑色背景上的白色文本,但黑色光标

ios - 自定义细胞图像将每 3 个细胞重复一次