UITableView没有正确显示 - 为什么?

时间:2013-12-27 18:29:45

标签: ios objective-c cocoa-touch uitableview

我使用Xcode 5和storyboard,我使用导航控制器和表格视图,在下面的代码中称为RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UITableViewController
@property NSMutableArray *objects;
@end

RootViewController.m

#import "RootViewController.h"

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [_objects addObjectsFromArray:@[@"Apple",@"Google",@"Intel"]];
}

#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"%d", _objects.count);
    return _objects.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.textLabel.text = @"A";

    return cell;
}

@end

Xcode说“Build Succeeded”,但结果屏幕没有正确呈现的行 它返回空行和名为Root View Controller的标题。

为什么?
我想我正确地在numberOfRowsInSectioncellForRowAtIndexPathnumberOfSectionInTableView中编写了三个必需的方法,我认为我不需要在头文件中定义协议,因为它已经在父文件中定义了UITableViewController

由于某些原因,numberOfRowsInSection方法中的调试NSLog函数未被执行。

那我在这里错过了什么?我该如何解决?

感谢。

4 个答案:

答案 0 :(得分:3)

问题是_objects为零 - 当你试图将对象添加到任何东西时,结果都没有。

所以你需要创建数组而不是添加它。改变这一行

[_objects addObjectsFromArray:@[@"Apple",@"Google",@"Intel"]];

到这个

_objects = [NSMutableArray arrayWithObjects:@"Apple", @"Google", @"Intel", nil];

在故事板中,您还需要设置UITableViewCell的单元格标识符(有关如何执行此操作的教程)。

答案 1 :(得分:0)

放入viewDidLoad

self.title = @"some title";

更改导航栏的标题

答案 2 :(得分:0)

您需要先创建对象,然后才能向其添加任何内容:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _objects = [NSMutableArray new];
    [_objects addObjectsFromArray:@[@"Apple",@"Google",@"Intel"]];
}

答案 3 :(得分:0)

您是否设置了tableview委托?您是否在故事板中正确设置了tableviewcell?