将 UITableView 添加到现有项目:添加数组以填充行时崩溃
Posted
技术标签:
【中文标题】将 UITableView 添加到现有项目:添加数组以填充行时崩溃【英文标题】:Add UITableView to an existing project: crash when adding array to populate rows 【发布时间】:2012-05-04 11:05:38 【问题描述】:我正在向项目中添加一个 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 数据源必须从 tableView:cellForRowAtIndexPath: 返回一个单元格:”...
CountryVieWController 连接:
文件所有者的联系 奥特莱斯 数据源 -> 文件的所有者 委托 -> 文件的所有者 参考网点 查看 -> 文件的所有者
代码:
// 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];
提前致谢。
【问题讨论】:
你错过了重要的部分,'tableView:cellForRowAtIndexPath:' 方法 【参考方案1】:您需要为 UITableView 实现委托方法。
看看这个:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/CreateConfigureTableView/CreateConfigureTableView.html#//apple_ref/doc/uid/TP40007451-CH6-SW10
我发现最简单的方法是你的 UITableView 询问你的代码应该在单元格中做什么。您可以使用这些方法来配置您的表格视图和其中的 UITableViewCells。
你需要这样的东西:
- (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;
【讨论】:
非常感谢 ;) 现在表格视图显示国家列表。按照您建议的教程并更改代码以填充单元格。不幸的是,我收到了两个警告,两个警告都一样:“file://localhost/Users/luisprado/Developer/pruebaF1%20copia%202/pruebaF1/CountryTable.xib: 警告:不支持的配置:表格视图控制器 - 选择国家视图出口和NIB 名称集”没有要连接的“视图”,只有表视图。 很高兴你能成功!不太确定你的警告。听起来您在界面生成器中创建了一个不正确的连接。也许一次删除一个连接,看看问题出在哪里。如果该连接没有问题,请将其重新连接并尝试下一个。以上是关于将 UITableView 添加到现有项目:添加数组以填充行时崩溃的主要内容,如果未能解决你的问题,请参考以下文章