當我試圖用tableView: didSelectRowAtIndexPath:
方法推動視圖控制器時,過渡確實有效,但它的動畫看起來相當糟糕;當我點擊UITableView中的任何單元格時,整個屏幕的三分之一首先變黑(但其他三分之二仍然是原始屏幕的UITableViewCell!),並且有一點延遲,整個屏幕變黑。tableView:didSelectRowAtIndexPath:如果不設置下一個視圖控制器的背景顏色,看起來很糟糕
我不知道爲什麼tableView: didSelectRowAtIndexPath:
方法在用戶界面方面的行爲如此糟糕。這裏是我的代碼,以使過渡:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *detailViewController = [[DetailViewController alloc] init];
People *people = [_fetchedResultsController objectAtIndexPath:indexPath];
detailViewController.title = people.type1;
[self.navigationController pushViewController:detailViewController animated:YES];
}
但是,如果我改變animated:
到NO
,過渡沒有任何問題(在UI方面,再一次,這是我要問這裏是什麼),但它會立即更改爲新的視圖控制器(自然,因爲它是動畫:NO首先完成)。
對此奇怪行爲的回答是在執行pushViewController: animated:
方法之前設置第二個視圖控制器的backgroundColor
,如this question中所建議的。
我想知道爲什麼我必須在轉換前設置背景顏色,爲什麼設置背景顏色可以解決這個與UI相關的問題。
我使用的iOS 7和的Xcode 5.
你可以發佈的代碼DetailViewController,我懷疑有趣的事情發生在你的viewDidLoad,viewWillAppear,viewDidAppear等 –
我沒有觸及那些繼承功能呢。 – Blaszard