我正在向一个项目中添加一个填充了国家/地区的TableView供您选择。添加了新文件(用于iPad + XIB的UITableView子类),编写了触发器IBAction代码(如果默认国家/地区不正确则编辑文本字段),建立了一些连接并显示空表视图。我已经阅读了几个教程,我无法解决问题:当带有单词的数组加载 - (void)viewDidLoad时,应用程序崩溃时出现以下警告:
2012-05-04 12:34:36.740 pruebaF1 [4017:f803] *断言失败 - [UITableView _createPreparedCellForGlobalRow:withIndexPath:],/ SourceCache / UIKit_Sim / UIKit-1914.84 / UITableView.m:6061 2012-05-04 12:34:36.741 pruebaF1 [4017:f803] * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'UITableView dataSource必须从tableView返回一个单元格:cellForRowAtIndexPath:'... < / p>
CountryVieWController连接:
文件所有者的连接 奥特莱斯 dataSource - &gt;文件的所有者 代表 - &gt;文件所有者 引用Outlets 查看 - &gt;文件所有者
代码:
// CountryTableVieWController.h
#import <UIKit/UIKit.h>
@interface CountryTableVieWController :
UITableViewController<UITableViewDelegate,UITableViewDataSource>
{
NSMutableArray *countriesArray;
NSArray *countryArray;
}
@end
// CountryTableVieWController.m
#import "CountryTableVieWController.h"
#import "pruebaF1SecondViewController.h"
@interface CountryTableVieWController ()
@end
@implementation CountryTableVieWController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
countriesArray = [[NSMutableArray alloc] initWithObjects:@"Austria", @"Italy", @"France",nil];
}
提前致谢。
答案 0 :(得分:0)
您需要为UITableView实现委托方法。
我发现最简单的方法是让你的UITableView询问你的代码应该在单元格中进行什么。您可以使用这些方法配置表视图和其中的UITableViewCell。
你需要这样的东西:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
[countriesArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
NSString *country = [countriesArray objectAtIndex:indexPath.row];
cell.textLabel.text = country;
return cell;
}