用数组的内容填充表格视图不起作用

Posted

技术标签:

【中文标题】用数组的内容填充表格视图不起作用【英文标题】:Fill a tableview with content of array NOT working 【发布时间】:2014-02-22 13:06:52 【问题描述】:

基本上我想做的是用数组中的字符串填充表格视图。我制作了第二个 UIviewcontroller 和一个自定义单元格,其中显示了一个图像和两个其他标签。但是当我运行代码时,没有错误消息,但 tableview 是空白的,几乎就像它根本不识别代码一样。我已经在 .h 文件中为其声明了一个委托和数据源。

    #import "ViewController4.h"
    #import "Cell.h"
    #import "XMLparse.h"

    @interface ViewController4 ()

@end

@implementation ViewController4

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
    
    return self;


-(NSMutableArray *)objects 
    if (!Datarray) 
        Datarray = [[NSMutableArray alloc]init];
    
    return Datarray;


- (void)viewDidLoad

    [super viewDidLoad];
    Datarray = [[NSMutableArray alloc]initWithObjects:@"USD",@"EUR",@"JPY",@"BGN",@"CZK",@"DKK",@"GBP",@"HUF",@"LTL",@"PLN",@"RON",@"SEK",@"CHF",@"NOK",@"HRK",@"RUB",@"TRY",@"AUD",@"BRL",@"CAD",@"CNY",@"HKD",@"IDR",@"ILS",@"INR",@"KRW",@"MXN",@"MYR",@"NZD",@"php",@"SGD",@"THB",@"ZAR", nil];
    Tableview.delegate = self;
    XMLparse *datee = [[XMLparse alloc]init];
    [datee loadDataFromXML];
    Date.text = [NSString stringWithFormat:@"Last updated: %@",[datee tid]];


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


- (NSInteger)numberOfSectionsInTableview:(UITableView *)tableView 
    return 1;


- (NSInteger)tableView:(UITableView *)tableview numberOfRowsInSection:(NSInteger)section 
    return [Datarray count];


- (CGFloat)tableView:(UITableView *)tableview heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return 78;



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *simpleTableIdentifier = @"Cell";

    Cell *cell = (Cell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    

  //  cell.ratename.text = [tableData objectAtIndex:indexPath.row];
 //   cell.thumbnailImageView.image = [UIImage imageNamed:[thumbnails objectAtIndex:indexPath.row]];
    cell.currencyname.text = [Datarray objectAtIndex:indexPath.row];

    return cell;





@end

【问题讨论】:

你调试了吗?您是否曾经设置过表数据源?你有没有要求表重新加载? 设置数据源和委托 【参考方案1】:

您必须将self 设置为 UITableView 的数据源属性。我建议您编辑以下代码。

- (void)viewDidLoad

    [super viewDidLoad];
    Datarray = [[NSMutableArray alloc]initWithObjects:@"USD",@"EUR",@"JPY",@"BGN",@"CZK",@"DKK",@"GBP",@"HUF",@"LTL",@"PLN",@"RON",@"SEK",@"CHF",@"NOK",@"HRK",@"RUB",@"TRY",@"AUD",@"BRL",@"CAD",@"CNY",@"HKD",@"IDR",@"ILS",@"INR",@"KRW",@"MXN",@"MYR",@"NZD",@"PHP",@"SGD",@"THB",@"ZAR", nil];
    Tableview.delegate = self;
    Tableview.dataSource = self;    // <---- added code for setting datasource.
    XMLparse *datee = [[XMLparse alloc]init];
    [datee loadDataFromXML];
    Date.text = [NSString stringWithFormat:@"Last updated: %@",[datee tid]];

【讨论】:

将数据源更改为自我结束并出现此错误代码:2014-02-22 14:15:44.798 Pickerview[15332:70b] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因: '无法在包中加载 NIB:'NSBundle /Fredrik/Library/Application Support/iPhone Simulator/7.0.3-64/Applications/188ABEBA-9EFB-4548-84F1-2B0B9A0277CF/Pickerview.app>(已加载)'名称为“细胞” @user3338161 你的项目有Cell.xlb吗? 是的,它被命名为table.xib思想 @user3338161 尝试从您的项目中删除 Cell.xib 和 Cell.h/m 然后再次将它们添加到其中。 @user3338161 如果您的项目从 ios 5 开始可用。我相信链接 (***.com/a/15591474/579236) 会对您有所帮助。

以上是关于用数组的内容填充表格视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

快速将 REST API 中的 JSON 数据填充到表格视图中不起作用

使用数组的表格视图不起作用 - xcode 7.3

用“零”填充数组-memset()不起作用-[关闭]

在 IE7 中,表格左侧的填充不起作用

添加表格视图单元格在 iOS 中不起作用?

绝对顶部:0 底部:0 在 IE11 的表格单元中不起作用