我无法将视图控制器用作表数据源

时间:2013-11-08 20:45:37

标签: ios memory-leaks uitableview

我是XCode的新手,我正在尝试将数据填充到表视图中,该视图是视图控制器的子视图。但我不断收到运行时错误,我无法弄清楚原因。请帮忙。

我做的第一件事是在故事板中创建视图,调整大小,然后将其保留为Dynamic Prototypes表。

然后我按住Control键点击将表格拖到我的View Controller类上,并按预期创建了一个属性:

@interface FAViewController () <UITableViewDataSource>

@property (strong, nonatomic) IBOutlet UITableView *myTable;

@end

请注意,我添加了UITableViewDataSource协议。然后我将此类声明为数据源:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.myTable.dataSource= self;
}

最后,我实现了所需的必需方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if ([tableView isEqual:self.myTable]) {
        return 1;
    }
    return 0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
    UITableViewCell *cell = nil;

    cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.textLabel.text = @"Test";
    return cell;
}

当我运行应用程序时,我需要这段代码:

int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([FAAppDelegate class]));
    }
}

并说信号SIGBART。我希望我已经提供了所有相关信息。如果没有,请告诉我。

1 个答案:

答案 0 :(得分:-2)

而不是:

UITableViewCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

尝试:

UITableViewCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
}

在第一个示例中,当您说“UITableViewCell * cell = nil;”时,您说对象指针未指向任何内容,然后在您尝试使用此对象时发生错误。在我给出的例子中,你避免这种情况发生。