我使用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
的标题。
为什么?
我想我正确地在numberOfRowsInSection
,cellForRowAtIndexPath
和numberOfSectionInTableView
中编写了三个必需的方法,我认为我不需要在头文件中定义协议,因为它已经在父文件中定义了UITableViewController
。
由于某些原因,numberOfRowsInSection
方法中的调试NSLog函数未被执行。
那我在这里错过了什么?我该如何解决?
感谢。
答案 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?