2014-12-01 2 views
0

두 가지 다른보기에서 UIView를 포함하는 앱이 있습니다. 이 두 개의 UIView에 동일한 사용자 지정 드로잉을 표시하고 하나는 편집 가능하고 다른 하나는 편집 할 수 없도록하려고합니다. 한 뷰 컨트롤러에서 다음 뷰 컨트롤러로 편집 할 때 (편집 할 수없는 뷰가있는 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

+0

로 변경하면 오류가 발생하여 오류가 발생합니다. public function navigationController (navigationController : UINavigationController, willShowViewController : UIViewController, animated : Bool) 오류가 발생하지 않았지만 뒤로 버튼을 눌렀습니다. – NumberOneRobot

+0

@ user1493950, 첫 번째 의견에 대해 Apple은 그런 식으로 이름을 붙였습니다. 그래서 그것은 "navigationContr"을 입력 한 다음 완료된 목록에서 해당 메서드를 선택했습니다. 이 코드를 가지고있는 컨트롤러를 네비게이션 컨트롤러의 델리게이트로 설정 했습니까? – rdelmar

관련 문제