Хотя это естественно поместить в contentView ячейки, я вполне уверен, что это не проблема (на самом деле, в прошлом у меня никогда не было правильно отображать подпредставления в contentView, поэтому я всегда использовал клетку).
В любом случае, проблема заключается в первых трех строках, когда вы начинаете создавать свою кнопку. Первые две строки в порядке, но код перестает работать с:
scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
buttonWithType: на самом деле удобный метод для создания кнопки (это как компактный alloc-init). Следовательно, он фактически «обнуляет» ваши последние две строки (вы в основном создали кнопку дважды). Вы можете использовать только init или buttonWithType: для одной и той же кнопки, но не для обеих.
UIButton *scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
scanQRCodeButton.frame = CGRectMake(0.0f, 5.0f, 320.0f, 44.0f);
scanQRCodeButton.backgroundColor = [UIColor redColor];
[scanQRCodeButton setTitle:@"Hello" forState:UIControlStateNormal];
[cell addSubview:scanQRCodeButton];
Это будет работать (обратите внимание, что вы можете использовать cell.contentView, если хотите). Если вы не используете автоматический подсчет ссылок (ARC), я хотел бы упомянуть, что вам не нужно ничего делать с точки зрения управления памятью, потому что buttonWithType: возвращает кнопку с автоматическим освобождением.