我花了數小時,我無法弄清楚這一點。我有其在此處發起的細節視圖控制器(UITableView的):Superview第二次發佈視圖控制器後無效
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
EventLocationDetailController *newDetailViewController = [[EventLocationDetailController alloc] initWithNibName:@"EventLocationDetailController" bundle:nil];
self.eventDetailController = newDetailViewController;
[self.navigationController pushViewController:self.eventDetailController animated:YES];
[newDetailViewController release];
}
在詳細視圖中控制器有它調用以下方法來顯示的按鈕的方法的滑動式-滑出動畫確認用戶選擇:
-(void)confirmLastActionWithMessage:(NSString *)message {
ConfirmActionViewController *newConfirmActionViewController = [[ConfirmActionViewController alloc] initWithNibName:@"ConfirmActionViewController" bundle:nil];
self.confirmActionViewController = newConfirmActionViewController;
[newConfirmActionViewController release];
[[self.view superview] addSubview:self.confirmActionViewController.view];
}
協議的方法由ConfirmActionViewController指示動畫完成調用。
-(void)didFinishConfirmDisplay:(UIView *)viewToRemoveFromSuperview {
[viewToRemoveFromSuperview removeFromSuperview];
}
這工作完美,我第一次按下按鈕。如果我彈出細節控制器並將它重新推回堆棧並再次按下按鈕,則不會發生任何事情,並且細節控制器的超級視圖在每次調用該方法後均爲零。只有當它到達confirmLastActionWithMessage方法時,Superview纔會在詳細視圖的viewWillAppear
方法中爲零。之間沒有其他用戶交互發生。我如何獲得超視圖?我有一個沒有動畫的類似代碼。
我也注意到,當彈出堆棧時,詳細視圖控制器沒有調用dealloc。不確定問題出在哪裏。
謝謝。
編輯1
好的。我用這個替換了addSubview行:
[self.view insertSubview:self.confirmActionViewController.view atIndex:0];
並且動畫視圖出現在其中一個表格單元下面。其中一個表格單元是否可以竊取超級視圖?
你的房產是什麼樣的?具體來說,你是否在屬性中添加了自定義邏輯? – mydogisbox
@property(nonatomic,retain)ConfirmActionViewController * confirmActionViewController; –
執行,而不是聲明。你有'@綜合'或其他什麼? – mydogisbox