iOS 6 用に設計されたアプリがいくつかあり、今日はそれらを iOS 7 にアップグレードしました。
これらは単純なテーブル ビュー リストであり、レコードを選択すると、その行に関する詳細が別の画面に表示されます。これは 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 句を削除すると、すべての選択で発生します。コード全体をコメントアウトすると、何も選択できなくなります。だから私は、View Controllerを初期化する別の方法を見つけなければならないことを想像しています。何か案は?なぜこれがiOS 6で機能したのですか?