2012-12-09 66 views
1

所以我有一個iPhone應用程序。它具有簡單的結構,全部基於UINavigationControlleriPhone的故事板,以編程方式調用segues,導航問題

我有一個故事板,有一個視圖,從另一個視圖到另一個視圖,等現在這個其他視圖有一個UITextView,我不想在這個屏幕上編輯 - 如果用戶點擊這個,我想它而不是飛到基本上具有相同文本視圖的第二屏幕,但是該屏幕是全屏的,並且用戶將在返回到前一屏幕之前編輯該屏幕上的文本。

因此我捕獲了textViewShouldBeginEditing方法。我以前,在故事板編輯器,手動創建從以前的視圖控制器到這個新的視圖控制器推SEGUE,並把它命名,這樣我可以把它通過它的身份,這我做:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 
{ 
    // This is called when the user clicks into the textView as if to edit it. 

    // Instead of editing it, go to this other view here: 
    [self performSegueWithIdentifier:@"editMemoSegue" sender:self]; 

    // Return NO, as I don't actually want to edit the text on this screen: 
    return NO; 
} 

似乎合理。它的工作原理。八九不離十。事實上,它確實讓我對其他觀點產生了興趣。其他視圖的事件啓動後,我將其設置爲文本視圖以成爲第一響應者,我編輯該屏幕上的文本。每個人都很開心。

直到我想使用後退按鈕返回到上一個視圖。

然後我很快發現 - 我的導航堆棧是foobared。大多數情況下,出於某種原因,我有兩個新的編輯控制器實例,所以當我第一次點擊後退按鈕時,我又重新獲得了相同的內容。然後,奇怪的是,偶爾它會按預期工作,而且我只會看到我以前的控制器只有一次後退。

我開始閱讀日誌,我發現這一點:

2012-12-09 09:41:03.463 APP[8368:c07] nested push animation can result in corrupted navigation bar 
2012-12-09 09:41:03.818 APP[8368:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 
2012-12-09 09:41:03.819 APP[8368:c07] Unbalanced calls to begin/end appearance transitions for <SecondController: 0x83881d0>. 

所以,很顯然,我在做正確的東西在這裏。問題是,什麼?我如何以正確安撫iPhone框架的Tiki神的方式來做我想做的事?

+0

該錯誤消息,「嵌套推動畫」通常是由多次推送到相同的控制器。上面的代碼是你執行的唯一的地方嗎?你的故事板中是否只有導航控制器和上述2個控制器? – rdelmar

+0

該代碼是調用segue的唯一地方。該控制器是導航堆棧中的第二個控制器(A> B> C,這發生在B> C上)。 – mschultz

+0

某處必須設置錯誤。你發佈的代碼應該可以正常工作。如果你可以在某個地方發佈你的項目,我可以看看它,但沒有看到這個項目就沒有別的可說的了。 – rdelmar

回答

2

檢查textViewShouldBeginEditing是否被調用兩次。我注意到有時這些委託電話是。

+0

所以它是! textViewShouldBeginEditing被調用兩次!我不知道爲什麼,但肯定的是,它在那裏。一個簡單的標誌變量來確定該方法是否已被調用阻止了這一點,並且一切都像魅力一樣工作。我不能接受這個答案,但是你應該將此作爲答案發布,我一定會這樣做 - 因爲這是解決問題的方法。 – mschultz

0

你的故事板上的「editMemoSegue」是如何創建的?它是從textView創建的嗎?如果是這樣,那麼你應該直接從視圖控制器或視圖控制器上的頂部狀態欄重新創建它,這樣當你觸摸觸發器對象並以編程方式調用它時,它不會被調用兩次。

+0

我剛剛證實了這一點 - segue實際上是從第一個視圖控制器創建的,並直接指向第二個視圖控制器。我預計這是對此的正確模式? – mschultz

相關問題