加载TableViewController时出现NSInvalidArgumentException

时间:2013-02-21 16:01:07

标签: iphone ios objective-c xcode cocoa-touch

我在ViewController上有一个按钮来加载TableViewController。按钮后面的代码是:

- (IBAction)loadSearchView:(id)sender {

SearchTableViewController *searchVC = [[SearchTableViewController alloc] initWithStyle:UITableViewStylePlain];
[[self navigationController] pushViewController:searchVC animated:YES]; }

加载TableViewController后,应用程序崩溃并出现以下错误:

  

2013-02-21 15:22:19.460 MyMusicLibrary [4159:c07] - [UITableView   dequeueReusableCellWithIdentifier:forIndexPath:]:无法识别   选择器发送到实例0x7aa0800 2013-02-21 15:22:19.462   MyMusicLibrary [4159:c07] *因未捕获的异常而终止应用   'NSInvalidArgumentException',原因:' - [UITableView   dequeueReusableCellWithIdentifier:forIndexPath:]:无法识别   选择器发送到实例0x7aa0800'   * 第一次抛出调用堆栈:(0x14b5022 0xeb5cd6 0x14b6cbd 0x141bed0 0x141bcb2 0x3279 0xb2c54 0xb33ce 0x9ecbd 0xad6f1 0x56d21 0x14b6e42   0x1d86679 0x1d90579 0x1d154f7 0x1d173f6 0x1d16ad0 0x148999e 0x1420640   0x13ec4c6 0x13ebd84 0x13ebc9b 0x139e7d8 0x139e88a 0x18626 0x1fdd   0x1f05)终止调用抛出异常

在加载TableViewController时尝试运行的代码是:

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

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

    [[cell textLabel] setText:[NSString stringWithFormat:@"Cell %i", [indexPath row]]];

    return cell;
}

numberOfSectionsInTableView和numberOfRowsInSection设置如下:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return 10;
}

但是,当这些都设置为0时,表视图会加载。有人可以帮忙吗? :)

2 个答案:

答案 0 :(得分:1)

仅使用

 dequeueReusableCellWithIdentifier:@"Cellidentifier" 
像这样

UITableViewCell *cell = [tableView   dequeueReusableCellWithIdentifier:@"Cellidentifier"];

答案 1 :(得分:-1)

没有可用的tableview方法- (id)dequeueReusableCellWithIdentifier: forIndexPath:,您只需要传递

的标识符
- (id)dequeueReusableCellWithIdentifier: