数据未在以编程方式创建的tableView中加载

时间:2014-07-23 18:06:53

标签: ios objective-c uitableview

我试图创建一个非常简单的应用程序,而不是第一次使用故事板。

我只是尝试在应用加载后将tableView显示为我的第一个屏幕。我创建一个UIView类,然后在viewDidLoad方法中创建一个表视图。

在我的委托类中,我创建了一个类的实例,然后将其设置为我的根视图控制器。

当我运行应用程序时,会显示tableView,但单元格不显示它们上的数字。我一直在阅读关于此的苹果文档,但到目前为止还没有找到解决方案。它可能很小但我似乎无法弄明白。

正如你所看到的,我创建了一个充满非常简单的字符串的数组,这些字符串只是数字。我希望每个数字显示在表视图中的单元格上,但是当tableview加载时,单元格是空白的。

#import "NumbersViewController.h"

@interface NumbersViewController ()

@end

@implementation NumbersViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
    tableView.delegate = self;
    tableView.dataSource = self;
    [tableView reloadData];

    self.view = tableView;

    self.numArray = [NSMutableArray array];
    [self.numArray addObject:@"1"];
    [self.numArray addObject:@"2"];
    [self.numArray addObject:@"3"];
    [self.numArray addObject:@"4"];
    [self.numArray addObject:@"5"];
    [self.numArray addObject:@"6"];
    [self.numArray addObject:@"7"];
    [self.numArray addObject:@"8"];
    [self.numArray addObject:@"9"];



    // Do any additional setup after loading the view.
}

- (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 {
    // Number of rows is the number of time zones in the region for the specified section.

    return [self.numArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyReuseIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:MyIdentifier];
    }

    NSString *number = [self.numArray objectAtIndex:indexPath.row];
    cell.textLabel.text = number;
    return cell;
}



@end

2 个答案:

答案 0 :(得分:2)

您在reloadData

之后添加数据
//Delegate methods called
[tableView reloadData];

self.view = tableView;

// data added
self.numArray = [NSMutableArray array];
[self.numArray addObject:@"1"];

<强>解决方案 移动numArray初始化&amp;播种代码reloadData

答案 1 :(得分:0)

在将值设置为数组

后调用表重新加载
- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
    tableView.delegate = self;
    tableView.dataSource = self;

    self.view = tableView;

    self.numArray = [NSMutableArray array];
    [self.numArray addObject:@"1"];
    [self.numArray addObject:@"2"];
    [self.numArray addObject:@"3"];
    [self.numArray addObject:@"4"];
    [self.numArray addObject:@"5"];
    [self.numArray addObject:@"6"];
    [self.numArray addObject:@"7"];
    [self.numArray addObject:@"8"];
    [self.numArray addObject:@"9"];

    [tableView reloadData];

}