尝试滚动时UITableView崩溃(坚持几个小时)

时间:2011-11-11 23:56:41

标签: iphone xcode uitableview

我一直试图解决这个问题几个小时。当我尝试滚动时,我的应用程序不断崩溃。我查看了可重复使用的部分,但仍然卡住了。

更新:我正在使用ARC& amp;运行xcode 4.2我的访问错误很糟糕。

更新2:我试图使用Zombies找到问题,但仍然无法解决问题。 僵尸的屏幕截图:http://img440.imageshack.us/img440/7651/instruments.png

更新3 [问题解决]:我确保ViewDidUnload中的所有出口都是[self set ___:nil]。我还为添加的视图创建了一个属性,而不是在.m文件中创建视图。 底部的评论也帮助了我: get "EXC_BAD_ACCESS" when trying dismissModalViewController after parent view controller has been viewDidUnload

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [self.sortedKeys count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [self.sortedKeys objectAtIndex:section];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    listData2 =[self.tableContents objectForKey:
    [self.sortedKeys objectAtIndex:section]];
    return [listData2 count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    questionTitle = [[self.tableContents objectForKey:[self.sortedKeys objectAtIndex: [indexPath section]]] objectAtIndex:[indexPath row]];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];
        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
        cell.textLabel.textColor = [UIColor blueColor];
    }

    cell.textLabel.text = questionTitle;

    return cell;
}

2 个答案:

答案 0 :(得分:0)

跟踪堆栈确实非常有用,但我也相信您应该将listData2 = ..移至viewWillApear:

- (void)viewWillAppear:(BOOL)animated
{
    listData2 =[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [listData2 count];
}

另外,请尝试将NSLogs添加到其他UITableView方法中,例如:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSLog(@"numberOfSectionsInTableView: self.sortedKeys count: %i",[self.sortedKeys count]);
    return [self.sortedKeys count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSLog(@"titleForHeaderInSection: self.sortedKeys object: %@"[self.sortedKeys objectAtIndex:section]);
    return [self.sortedKeys objectAtIndex:section];
}

答案 1 :(得分:0)

不是在您的cellForRowAtIndexPath中设置questionTitle(可能是ViewController的属性),而是定义一个本地字符串:

NSString *questionTitle2 = ...

然后使用它来设置单元格标签:

cell.textLabel.text = questionTitle2;

这有什么不同吗?