Iphone UITableView向上滚动时应用程序崩溃
我想知道为什么我的应用程序在向上滚动UITableView时崩溃Iphone UITableView向上滚动时应用程序崩溃,iphone,objective-c,xcode,ios4,Iphone,Objective C,Xcode,Ios4,我想知道为什么我的应用程序在向上滚动UITableView时崩溃 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; NSArray *arrayForNames=[[NSArray alloc]initWithArray:[objCo
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSArray *arrayForNames=[[NSArray alloc]initWithArray:[objContentManager getDuasNamesByGroupName:[arrayDuaGroups objectAtIndex:indexPath.section]]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// implementation on cell
}
当我向上滚动时,程序在UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier]处崩溃代码>
我看了教程,在那里我找不到任何不同的实现,它向下滚动非常平滑,但当我向上滚动时,它马上崩溃了,我不知道我哪里做错了
> 2011-06-24 15:07:10.976
> Tasbeeh[503:207] *** Terminating app
> due to uncaught exception
> 'NSRangeException', reason: '***
> -[NSArray objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
> *** Call stack at first throw: ( 0 CoreFoundation
> 0x02553919 __exceptionPreprocess + 185
> 1 libobjc.A.dylib
> 0x023685de objc_exception_throw + 47
> 2 CoreFoundation
> 0x0254958c -[__NSArrayI
> objectAtIndex:] + 236 3 Tasbeeh
> 0x00002922 -[ClassDuaTableCategory
> tableView:cellForRowAtIndexPath:] +
> 553 4 UIKit
> 0x00326a3f
> -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:]
> + 619 5 UIKit 0x0031cad2
> -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 6 UIKit
> 0x00331337
> -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1348 7 UIKit
> 0x003294bc -[UITableView
> layoutSubviews] + 242 8 QuartzCore
> 0x040e30d5 -[CALayer layoutSublayers]
> + 177 9 QuartzCore 0x040e2e05 CALayerLayoutIfNeeded + 220
> 10 QuartzCore
> 0x040e264c
> _ZN2CA7Context18commit_transactionEPNS_11TransactionE
> + 302 11 QuartzCore 0x040e22b0
> _ZN2CA11Transaction6commitEv + 292 12 QuartzCore
> 0x040e9f5b
> _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv
> + 99 13 CoreFoundation 0x02534d1b
> __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
> + 27 14 CoreFoundation 0x024c9987 __CFRunLoopDoObservers +
> 295 15 CoreFoundation
> 0x02492c17 __CFRunLoopRun + 1575 16
> CoreFoundation
> 0x02492280 CFRunLoopRunSpecific + 208
> 17 CoreFoundation
> 0x024921a1 CFRunLoopRunInMode + 97 18
> GraphicsServices
> 0x02cb82c8 GSEventRunModal + 217 19
> GraphicsServices
> 0x02cb838d GSEventRun + 115 20 UIKit
> 0x002c4b58 UIApplicationMain + 1160
> 21 Tasbeeh
> 0x00002024 main + 102 22 Tasbeeh
> 0x00001fb5 start + 53 ) terminate
> called after throwing an instance of
> 'NSException' Program received signal:
> “SIGABRT”.
请推荐我
谢谢。indexPath是否可能指向数组arrayDuaGroups
?尝试使用下面的
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell_%d_%d",indexPath.section,indexPath.row];
EDITED:
您对NSArray
有问题,您试图从不存在的数组中访问元素
您的arrayDuaGroups
数组在索引indexath.section
处没有任何对象
在获取对象之前,请检查arrayDuaGroups
数组内容和长度
[arrayDuaGroups objectAtIndex:indexPath.section]尝试对cell=nil进行注释,如果仅对cell=part进行注释,如果我认为是这样的话,它将修复它
// if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// }
编辑:
查看日志后-
问题在于数组作为数据源,当它尝试重建单元格时,在数组(arrayDuaGroups)中找不到任何内容,它是空的,请在类接口中使用retain属性声明数组,并检查se arrayDuaGroups是否为空这似乎是数组越界异常。您的阵列就是问题所在。您不应该将数组分配到cellForRowAtIndexPath方法中。在viewDidLoad方法中填充数据,然后使用该数组在单元格中显示数据。请检查tableview控制器的nib文件
视图控制器下应该有一个“表视图”
单击以查看表视图的属性检查器
检查“内容”以查看是否分配了“动态原型”或“静态单元”
从“静态单元”更改为“动态原型”可能可以解决您的问题。崩溃日志plz和实现单元也在此处提供。.我已经粘贴了它,请查看您可能需要添加getDuasNamesByGroupName
方法,以及显示如何填充和更改arrayDuaGroups
的代码。这就是问题所在,但为什么它会在UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier]崩溃代码>为什么在跟踪异常堆栈时,错误似乎出现在0x0254958c-[\uu NSArrayI objectAtIndex:][236 3,而不是在[tableView dequeueReusableCellWithIdentifier:CellIdentifier]中;谢谢Radu我想我有一个逻辑问题导致了这个错误谢谢你的帮助但我认为我在管理组中的行时有逻辑问题根据你的崩溃日志你的问题是由于一个aray越界异常肯定indexPath将指向数组的无效索引的值。这对我的操作没有帮助具有相同问题的tableview。