2014-12-01 56 views
0

我有一個包含兩個不同視圖中的UIView的應用程序。我希望這兩個UIViews顯示相同的自定義圖形,並且有一個可編輯,一個不可編輯。當我從一個視圖控制器切換到另一個視圖控制器時(從具有不可編輯視圖的vc到可編輯視圖),我看到UINavigation控制器中的後退按鈕。現在,在編輯視圖之後,我希望更改反映在不可編輯的視圖中。我想通過在按下後退按鈕時收到通知來執行此操作。到目前爲止,我已經試過沒有奏效:將信息發送到我正在返回導航控制器的視圖

public class BlockingViewController: UIViewController, UINavigationControllerDelegate { 

    func navigationController(navigationController: UINavigationController, viewController: UIViewController, animated: Bool) { 
     print("In function") 
    } 
} 

我從https://developer.apple.com/library/ios/documentation/UIKit/reference/UINavigationControllerDelegate_Protocol/index.html接過navigationController方法簽名,但我不知道我做了,使得它不能正常工作有什麼變化。我拿出了可選的聲明,因爲包含它給了我一個錯誤消息,聲明「可選只能應用於協議成員」。我認爲這是一個協議成員,但我猜不是。

回答

0

該函數聲明不正確。它應該是這樣的,

func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) { 
     println("In function") 
    } 

(或willShowViewController,如果這就是你想要的)

+0

這是爲什麼需要在這種情況下,而不是方法名稱什麼的?當它被稱爲「willShowViewController」時,調用函數「navigationController」似乎毫無意義。另外,爲什麼可以在參數名稱之前放置它? – NumberOneRobot 2014-12-01 17:49:25

+0

改變,給了我一個錯誤,然後將其更改爲 公共func導航控制器(navigationController:UINavigationController,willShowViewController viewController:UIViewController,animated:Bool) 沒有給我一個錯誤,但它也沒有被調用時我按下了後退按鈕。 – NumberOneRobot 2014-12-01 17:51:40

+0

@ user1493950,就你的第一條評論而言,蘋果公司就是這樣命名的,所以就是這樣 - 我只是輸入「navigationContr」,然後從完成列表中選擇該方法。你有沒有設置控制器,你有這個代碼作爲導航控制器的代表? – rdelmar 2014-12-01 17:55:08

相關問題