我正面临cellForRowAtIndexPath tableview委托方法
中的崩溃问题@interface EventListView : UIViewController <UITableViewDelegate, UITableViewDataSource>
IBOutlet UITableView *tblView;
NSMutableArray *arr_EventValues,*arr_Event_Details;
NSMutableArray *arr_EventListDetails;
@property(nonatomic, retain)NSMutableArray *arr_EventValues,*arr_EventListDetails, *arr_Event_Details;
@property(nonatomic, retain)UITableView *tblView;
- (void)viewDidLoad
{
appdelegate = (VibesGuideAppDelegate *)[[UIApplication sharedApplication] delegate];
ViewCalendar = [[CalendarView alloc] initWithNibName:@"CalendarView" bundle:[NSBundle mainBundle]];
[self.navigationController.navigationBar setHidden:YES];
self.arr_Event_Details = [[NSMutableArray alloc] init];
self.arr_EventValues = [[NSMutableArray alloc] init];
[super viewDidLoad];
}
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([self.arr_EventListDetails count] > 0)
{
return [self.arr_EventListDetails count];
}
return 0;
}
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
// ------------------------------- Custom cell ------------------------------
Customcell *cell = (Customcell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[[Customcell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.text = @"Hello";
return cell;
}
* - [EventListView tableView:cellForRowAtIndexPath:]:发送到解除分配的实例0x60e01b0的消息,我使用了来自xib的tableview并设置了所有连接并且在方法中的numberOfRowsInSection中也得到了数值,但在cellForRowAtIndexPath方法中没有调用,所以请给我一个想法我的问题....
提前致谢。
答案 0 :(得分:2)
起初,似乎你的某个变量被释放了。确保您已正确分配它。如果您已为其声明@property
,则最好将变量用作self.variable
。您可以在属性声明中使用retain
,如果是IOS 5 strong
。
只是为了确保您可以通过将NSZombieEnabled
设置为YES
来跟踪是否有任何变量被释放。启用僵尸后,释放对象的消息将不再出现奇怪的行为或以难以理解的方式崩溃,而是以可预测和调试器可破解的方式记录消息并死亡。您可以通过以下步骤设置NSZombieEnabled。
从上面的菜单栏中选择产品。按住alt /选项并选择“测试...”或“运行...”。转到Arguments选项卡,在“Environment Variables”部分添加NSZombieEnabled YES。
答案 1 :(得分:2)
您的 tableview本身已经发布 - 错误消息显示您将 cellForRowAtIndexPath 消息发送到表视图的解除分配的实例 - 所以您的问题出在某处保留或释放 EventListView ,但在此处显示的代码中无法看到。
答案 2 :(得分:0)
检查一下:
是否设置了表DataSource和委托。 cellForRowAtIndexPath中使用的数组已正确设置属性,并与self一起使用。名。
答案 3 :(得分:0)
首先,您将单元格出列,然后创建一个新单元格。这不是一个好习惯,如果你能够将一个单元格出列,你就不应该创建一个新的单元格。你应该有这样的东西:
Customcell *cell = (Customcell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[[Customcell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
解决此问题,如果您仍然遇到同样的问题,请告诉我。