我想知道为什么当我向上滚动我的UITableView时我的应用程序崩溃了。
- (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”.请推荐我。
谢谢。
发布于 2011-06-24 18:05:07
是否可能indexPath转到指向数组arrayDuaGroups的无效索引的值?
发布于 2011-12-29 00:56:06
请检查您的tableview控制器的nib文件。
你的视图控制器下面应该有一个“表视图”。
单击以查看表视图的属性检查器。
检查"content“,看看它是被分配了”动态原型“还是”静态单元“?
将“静态单元”更改为“动态原型”可能能够解决您的问题。
发布于 2011-06-24 18:09:49
尝试注释cell = nil if,并且只让cell = part,如果它是我认为的那样,它将修复它
// if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// }编辑:查看日志后-问题出在作为数据源的数组上,当它尝试重新构建单元格时,它在数组中找不到任何东西( arrayDuaGroups ),它是空的,请使用retain属性在类接口中声明您的数组,并检查arrayDuaGroups是否为空
https://stackoverflow.com/questions/6466240
复制相似问题