将 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 添加到现有项目:添加数组以填充行时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

将 Google maps api v2 添加到现有项目

将 CoreData 添加到现有项目后出错

将 TableViewController 添加到现有项目

iPhone - 将核心数据添加到现有项目?

将 jetpack compose 添加到现有项目

将 tvOS Parse SDK 添加到现有 iOS 项目