我有一個子視圖,當雙拍了拍子視圖的父視圖控制器上的協議的方法被稱爲像這樣...presentModalViewController不希望調用時工作從協議方法
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *theTouch = [touches anyObject];
if (theTouch.tapCount == 1) {
} else if (theTouch.tapCount == 2) {
if ([self.delegate respondsToSelector:@selector(editEvent:)]) {
[self.delegate editEvent:dictionary];
}
}
}
這裏是協議方法除去了字典消耗代碼...
- (void)editEvent:(NSDictionary){
EventEditViewController *eventEditViewController =
[[EventEditViewController alloc]
initWithNibName:@"EventEditViewController" bundle:nil];
eventEditViewController.delegate = self;
navigationController = [[UINavigationController alloc]
initWithRootViewController:eventEditViewController];
[self presentModalViewController:navigationController animated:YES];
[eventEditViewController release];
}
協議方法調用並沒有任何錯誤運行,但模態視圖不呈現自身。
我暫時將協議方法的代碼複製到一個父視圖按鈕的IBAction方法,以將其與子視圖隔離。當我點擊這個按鈕模態視圖工作正常。
誰能告訴我我做錯了什麼?爲什麼它在從父視圖的按鈕執行時運行,而不是從子視圖調用的協議方法運行。
這是我迄今試圖解決問題......
- 重啓動Xcode和模擬器
- 冉在設備上(iTouch的)
- 呈現,而不是navigationController eventEditViewController
- 使用Push來代替presentModal。
- 延遲調用protocolSelectSelector直接到協議,到子視圖中調用協議方法的另一個方法,從協議方法到使用presentModal調用的另一個方法。
- 使用計時器。
我有它目前安裝,以便該協議方法調用一個已知的工作方法,呈現不同的觀點。在調用presentModalViewController之前,它會彈出一個每次都起作用的UIAlertView,但模態視圖在通過協議方法調用時拒絕顯示。
我很難過。也許它與我從UIView類而不是UIViewController類調用協議方法的事實有關。也許我需要爲子視圖創建一個UIViewController?
感謝,
約翰