选择行时UITableView崩溃

时间:2013-11-25 16:26:02

标签: ios uitableview xcode5

当我点击tableview中的单元格时,应用程序崩溃了:

enter image description here

// 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已填充,除了我尝试单击一个单元格外,其他一切似乎都能正常工作。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

当您按下单元格时,您的临时UIViewControllers会被释放。 您应该保留对它们的引用以防止这种情况,例如在数组中。