Ios5 在iOS 5中,TableViewController未滚动且未调用DidSelectRowatineXpath

Ios5 在iOS 5中,TableViewController未滚动且未调用DidSelectRowatineXpath,ios5,uitableview,Ios5,Uitableview,我已经用XCode 4.2版本升级到iOS 5。 因为我升级了,所以无法创建正确的workign表视图控制器 1) 表视图显示在设备上,但当我尝试向上滚动时,它崩溃,没有任何错误消息 2) 当我尝试选择单元格时,不会调用didSelectRowAtIndexPath 注意:在升级到iOS5之前,相同的代码为我工作。 这是TableViewController.m文件的代码 #import "CTableViewController.h" @implementation CTableViewC

我已经用XCode 4.2版本升级到iOS 5。 因为我升级了,所以无法创建正确的workign表视图控制器

1) 表视图显示在设备上,但当我尝试向上滚动时,它崩溃,没有任何错误消息

2) 当我尝试选择单元格时,不会调用didSelectRowAtIndexPath

注意:在升级到iOS5之前,相同的代码为我工作。

这是TableViewController.m文件的代码

 #import "CTableViewController.h"
 @implementation CTableViewController

 @synthesize arrNames;

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

-(void)viewDidLoad
{
   [super viewDidLoad];

   arrNames = [[NSMutableArray alloc]initWithObjects:@"Peter Frank Brauer",@"Robert Schneider",@"Winfried Walter Kem",@"Eugen Germen Bachle",@"Clara Weib",@"Heinz Guther Winkler",@"Roland Bendel",@"Swen Aschemeyer",@"Patrick Bodingmeier",nil];
 }

-(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 [self.arrNames count];
 }

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

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

// Configure the cell...
cell.textLabel.text = [self.arrNames objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont systemFontOfSize:16];
NSLog(@"CTableViewController::cellForRowAtIndexPath");
return cell;
}

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"called didSelectRow method");

}

@end
谢谢,请帮忙
Suse

如果崩溃时没有任何错误消息,则可能是内存管理问题,并且可能是由于代码的其他部分,甚至是由于格式错误的nslog而发生

编译器似乎没有注意到一些明显的事情,比如为int设置一个分数值,这将在瞬间使应用程序崩溃,但没有任何有意义的错误消息

尝试在代码中寻找平凡的东西,而不仅仅是在tableView实现中

另外,您使用alloc、init(非自动释放)而不是arrayWithObjects填充arrNames有什么具体原因吗


另外:运行静态分析器!这可能会有帮助。按住“运行”按钮,将弹出一个“分析”按钮。

我将您的源代码复制并粘贴到一个新项目中。我突然想到了几件事

您正在子类化UITableViewController。尝试将UIViewController子类化,并删除initWithStyle方法

确保在nib中,tableview委托和数据源都附加到文件的所有者


如果您仍然遇到崩溃,那么这段代码不是您的问题。

在我的例子中,它是在本地声明的控制器实例,正在丢失delegade,所以我在头中声明了实例,一切正常。

如果首先崩溃,您如何选择行

顺便说一下,代码似乎不是问题所在。 重新启动Xcode后尝试以下操作:

  • 转到组织者
  • 选择“项目”选项卡
  • 单击打开的项目并删除派生数据
  • 然后等待重新索引。(您可以看到顶部条形图和带有新索引目标的代码)

    所以像往常一样,清理所有目标并构建

    在类似的情况下,它也适用于我。
    希望能有帮助。

    我遇到了完全相同的问题,现在需要花两周时间来解决,但运气不好:(如果有人有解决方案,请帮助!!!我在使用
    UITableView
    子类时也遇到了同样的问题。我将该类更改为
    UIViewController
    的子类后,该问题才得以解决。我在代码中没有做任何其他更改。您有“所有异常”吗已启用断点?这将为您提供有关应用程序崩溃原因的详细信息。@n如果您在UIViewController(非UITableViewController)中使用UITableView,则需要自己设置委托和数据源(您还应声明视图控制器符合UITableViewDelegate和UITableViewDataSource协议)是的@Moxy,我确实检查了所有这些东西。但我找不到原因。通过进行上述更改,问题得到了解决。我和他有着相同的问题。但我根本无法解决问题,我同意代码不是问题所在。但是我看到了所有断点和崩溃日志,我不知道如何修复它:(我在这里遇到的崩溃错误是EXC_BAD_ACCESS。很可能是由于内存管理,因为那个该死的弧,我不能使用autorelease命令。