相关疑难解决方法(0)

UITableView的委托和数据源方法

任何人都可以列出委托方法和数据源方法UITableView吗?

委托和数据源方法是否相同UITableView

cocoa-touch uitableview ios

11
推荐指数
4
解决办法
6万
查看次数

iOS和Xcode:在UITableView中设置委托和数据源时出现不兼容的类型错误

我正在尝试以编程方式创建一个包含UITableView的应用程序,该应用程序根据应用程序的Documents目录中的文件生成项目列表.我已经能够将文件读入数组_filepathsArray,但是当我尝试使用数组填充表时,编译崩溃并且Xcode抛出警告.Xcode指出了以下几行的问题:

_tableView.delegate = self;
_tableView.dataSource = _filepathsArray;
Run Code Online (Sandbox Code Playgroud)

这两者都引发了"语义问题".第一次抛出

`Assigning to 'id<UITableViewDataSource>' from incompatible type 'NSArray *__strong'`,
Run Code Online (Sandbox Code Playgroud)

而第二次抛出

`Assigning to 'id<UITableViewDelegate>' from incompatible type 'BrowserViewController *const __strong'`.
Run Code Online (Sandbox Code Playgroud)

如果我删除这些行,应用程序将正确编译(但当然不使用数据填充表),所以我认为问题与这些有关.

我是Objective C和Xcode的初学者,所以我无法弄清楚我在这里做错了什么.谢谢您的帮助.

UPDATE

我已经改变了这条线_tableView.dataSource = _filepathsArray;,_tableView.dataSource = self;正如下面的几个答案所解释的那样.现在,两行都抛出相同的错误:

`Assigning to 'id<UITableViewDelegate>' from incompatible type 'BrowserViewController *const __strong'`.
Run Code Online (Sandbox Code Playgroud)

这个错误可能是视图控制器配置方式的结果吗?在头文件中,它被定义为UIViewController

@interface BrowserViewController : UIViewController
Run Code Online (Sandbox Code Playgroud)

然后我将UITableView包含为子视图.

xcode incompatibletypeerror uitableview ios

2
推荐指数
1
解决办法
5410
查看次数

为什么与高度相关的方法放在UITableViewDelegate中,而不是放在UITableViewDataSource中

我在测验中发现一个问题是" 哪个UIKit协议包含方法-tableView:heightForRowAtIndexPath:? "

在没有任何负载的情况下,我想到的协议是UITableViewDataSource.但是当我检查苹果开发者文档时,我发现我错了.UITableViewDelegate是包含该方法的协议.

在此之前,我了解到这些高度方法是数据源协议的一部分.

是否有任何特定原因将它们放在UITableViewDelegate而不是UITableViewDataSource?

为什么跟随函数放在UITableViewDelegate中

  • heightForRowAt indexPath
  • heightForHeaderInSection
  • heightForFooterInSection

以及为什么以下函数放在UITableViewDataSource中

  • numberOfSectionsInTableView
  • numberOfRowsInSection

在此之前我认为这些是相似类型的功能,因此这些方法必须放在相同的协议中.

请告诉我这个问题.

提前致谢

uitableview ios

0
推荐指数
2
解决办法
94
查看次数