1

我只是按照教程中的几个步骤创建了一个包含 50 行的简单 TableView,但我得到了“Signal SIGABRT”:/ 我将 Storyboard 中的 TableView 与我创建的 TableViewController-Class 连接起来。

这是我的简单代码:

#import "TableViewController.h"

@interface TableViewController ()

@end

@implementation TableViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

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

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

    // Configure the cell...

    cell.textLabel.text = [NSString stringWithFormat:@"Row %i",indexPath.row];

    return cell;
}
4

1 回答 1

2

欢迎来到堆栈溢出!设置UITableViewCells 的标准方法不久前略有变化。这意味着 Xcode 为 tableViews 提供的模板代码使用该-tableView: dequeueReusableCellWithIdentifier: forIndexPath:方法,而较旧的教程和书籍(大部分)使用tableView: dequeueReusableCellWithIdentifier:

如果您想以新方式 ( -tableView: dequeueReusableCellWithIdentifier: forIndexPath) 执行此操作,则需要添加 [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];, viewDidLoad(或在情节提要/笔尖中设置原型单元重用 id,并适当设置单元类型 - 基本应该适用于普通单元)。

旧的方式 ( tableView: dequeueReusableCellWithIdentifier:) 通常后跟如下if语句:

if(cell == nil) 
{
    cell = [UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

\\Configure the cell. . .评论在哪里)

虽然这真的很简单,但公平地说,大多数教程确实教授旧方法,如果你没有注意到这两种-tableView:dequeueReusableCell方法之间的微小差异,我想这可能会让初学者感到困惑。显示新方法的教程在这里

于 2013-02-10T20:47:52.703 回答