Ios5 在iOS 5中,TableViewController未滚动且未调用DidSelectRowatineXpath
我已经用XCode 4.2版本升级到iOS 5。 因为我升级了,所以无法创建正确的workign表视图控制器 1) 表视图显示在设备上,但当我尝试向上滚动时,它崩溃,没有任何错误消息 2) 当我尝试选择单元格时,不会调用didSelectRowAtIndexPathIos5 在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
注意:在升级到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命令。