我有些應用程序專爲iOS 6的,今天我到他們那裏去升級到iOS 7IOS 7的tableView didSelectRowAtIndexPath方法顯示在第一選擇空白數據
他們是一個簡單的表格視圖列表和當一個記錄被選中在另一個屏幕上顯示該行的詳細信息。這在iOS 6中完美運行。使用iOS 7時,當我選擇一行時,它顯示空白數據頁面的第一個選擇。如果我再回到列表並重新選擇它,然後顯示正確的數據.. 這首空白顯示後,它會工作的優良任何其他記錄的項目..
我正在絞盡腦,不能爲我的生活弄清楚爲什麼會發生這種情況。
任何想法?
CODE:
- (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"];
}
}
而且,改變按鈕標題添加到收藏夾等部分,不會對第一項選擇改變時,只顯示「項目」。
謝謝。
UPDATE:
所以我把範圍縮小到這段代碼:
if(self.detailView == nil) {
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.detailView = viewController;
[viewController release];
}
如果我刪除if語句然後就發生在每一個選擇。如果我註釋掉整個代碼,我不能做任何選擇。所以我想象我必須找到另一種方式來初始化我的視圖控制器。有任何想法嗎?爲什麼這在iOS 6中工作呢?
另注:標題的設置每次都有效(即使在第一次選擇時)。 – Lkabo
@LababoDid設置所有文本標籤後,您嘗試在導航控制器上推送'self.detailView'? – Amar
如果您調試第一次嘗試執行的代碼。比較第一次嘗試和稍後嘗試的行數。每次檢查detailView的值。 – User382