当我点击tableview中的单元格时,应用程序崩溃了:
// QuestionViewController.h
@interface QuestionViewController : UIViewController <UITableViewDelegate , UITableViewDataSource> {
}
@property (nonatomic, strong) AppDelegate *app;
@property (nonatomic, retain) PFObject *feed;
@end
// QuestionViewController.m
@synthesize app, feed;
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
return [[feed objectForKey:@"options"] count];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *cellTxt = [[[feed objectForKey:@"options"] objectAtIndex:indexPath.row] objectForKey:@"option_text"];
[[cell textLabel] setText:cellTxt];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"clicked cell");
}
- (void)viewDidLoad {
[super viewDidLoad];
app = [[UIApplication sharedApplication]delegate];
feed = [app.feed objectAtIndex:0];
}
我已经实现了didSelectRowAtIndexPath,但在崩溃之前不会调用它。
SO上的其他帖子暗示我有未连接的插座,但我已经检查过情况并非如此。
我正在创建上述UIViewController的多个实例:
for (int a = 0; a < totalQuestions; a++) {
QuestionViewController *temp = (QuestionViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"aQuestion"];
temp.view.frame = CGRectMake(self.view.frame.size.width*a+scrollWidthBeforeAppend, 0, 320, 443);
[scroller addSubview:temp.view];
}
将它们添加到滚动视图中。它们显示正确,UITableView已填充,除了我尝试单击一个单元格外,其他一切似乎都能正常工作。有什么建议吗?
答案 0 :(得分:4)
当您按下单元格时,您的临时UIViewControllers会被释放。 您应该保留对它们的引用以防止这种情况,例如在数组中。