我有一些为 iOS 6 设计的应用程序,今天我将它们升级到 iOS 7。
They are a simple table view lists and when a record is selected it displays details about that row on another screen. 这在 iOS 6 中完美运行。在 iOS 7 中,当我选择一行时,它会在第一次选择时显示一个空白数据页。如果我然后返回列表并重新选择该项目,然后它会显示正确的数据..在第一次空白显示之后,它将适用于任何其他记录..
我绞尽脑汁,终生无法弄清楚为什么会这样。
有任何想法吗?
代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Statutes *statute = (Statutes *)[self.statutes objectAtIndex:indexPath.row];
if(self.detailView == nil) {
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.detailView = viewController;
[viewController release];
}
[self.navigationController pushViewController:self.detailView animated:YES];
self.detailView.title = [statute myStatute];
[self.detailView.statuteFullText setText:[statute myDescription]];
[self.detailView.statuteTitle setText:[statute myTitle]];
[self.detailView.favoritesID setText:[statute myPriority]];
[self.detailView.recordID setText:[statute myRecord]];
if ([@"1" isEqualToString:[statute myPriority]]) {
[self.detailView.favoriteControl setTitle:@"Remove from favorites"];
} else {
[self.detailView.favoriteControl setTitle:@"Add to favorites"];
}
}
此外,更改按钮标题添加到收藏夹等的部分在第一个项目选择时不会改变,它只是显示“项目”。
谢谢。
更新:
所以我把它缩小到这段代码:
if(self.detailView == nil) {
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.detailView = viewController;
[viewController release];
}
如果我删除 if 子句,那么它会在每个选择中发生。如果我注释掉整个代码,我将无法做出任何选择。所以我想我必须找到另一种方法来初始化我的视图控制器。有任何想法吗?为什么这在 iOS 6 中起作用呢?