Ris*_*hab 63 objective-c uitableview ios
以下代码有什么问题
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = @"hello";
return cell;
}
Run Code Online (Sandbox Code Playgroud)
和
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 2;
}
Run Code Online (Sandbox Code Playgroud)
但我无法从其dataSource获取一个单元格
整个例外是
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView (<UITableView: 0x7ffe0b092800; frame = (0 97; 414 590); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7ffe0acf3b10>; layer = <CALayer: 0x7ffe0aceb6e0>; contentOffset: {0, 0}; contentSize: {414, 88}>) failed to obtain a cell from its dataSource (<AllContactsViewController: 0x7ffe0ace60f0>)'
Run Code Online (Sandbox Code Playgroud)
我为表视图设置了委托和数据源
小智 148
使用Swift 3我忘记将UITableViewDataSource和UITableViewDelegate协议添加到ViewController声明时遇到此错误.
class DataViewController:UIViewController,UITableViewDataSource,UITableViewDelegate
添加它们解决了问题.
Two*_*aws 76
您的错误表明由于某种原因cellForRowAtIndexPath
返回nil
,我猜这是因为您未能将可重复使用的单元格出列.如果你想确认这一点,只需在当前的出列呼叫后设置一个断点:我希望你能找到cell
设置为nil
.
如果您正在使用现代Xcode模板,您可以获得为您制作的原型单元,那么您应该使用它:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
Run Code Online (Sandbox Code Playgroud)
如果您没有使用Xcode模板,请使用该行代码,然后注册您自己的重用标识符,如下所示:
[self.tableView registerClass:[UITableViewCell self] forCellReuseIdentifier:@"Cell"];
Run Code Online (Sandbox Code Playgroud)
一切都很好,应该解决问题.我为Swift用户更详细地写了这篇文章.
Viv*_*vek 43
您只需要添加UITableViewDelegate和UITableViewDataSource
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63219 次 |
最近记录: |