2010-05-21 60 views
0

我有一個子視圖,當雙拍了拍子視圖的父視圖控制器上的協議的方法被稱爲像這樣...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方法,以將其與子視圖隔離。當我點擊這個按鈕模態視圖工作正常。

誰能告訴我我做錯了什麼?爲什麼它在從父視圖的按鈕執行時運行,而不是從子視圖調用的協議方法運行。

這是我迄今試圖解決問題......

  1. 重啓動Xcode和模擬器
  2. 冉在設備上(iTouch的)
  3. 呈現,而不是navigationController
  4. eventEditViewController
  5. 使用Push來代替presentModal。
  6. 延遲調用protocolSelectSelector直接到協議,到子視圖中調用協議方法的另一個方法,從協議方法到使用presentModal調用的另一個方法。
  7. 使用計時器。

我有它目前安裝,以便該協議方法調用一個已知的工作方法,呈現不同的觀點。在調用presentModalViewController之前,它會彈出一個每次都起作用的UIAlertView,但模態視圖在通過協議方法調用時拒絕顯示。

我很難過。也許它與我從UIView類而不是UIViewController類調用協議方法的事實有關。也許我需要爲子視圖創建一個UIViewController?

感謝,

約翰

回答

0

從另一個論壇上,我已經解決了這個問題有所幫助。我從父UIView中的drawRect創建子視圖。我將子視圖的創建移到了viewController中,並將它們作爲子視圖添加到父scrollView中。一切都像現在的冠軍一樣。

約翰