2015-01-17 1 views
2

logoSelectionDelegate라고하는 델리게이트가 있습니다. 대리자에는 사용자가 로고를 변경했는지 여부를 나타내는 하나의 함수가 있습니다.특정 탭을 눌렀을 때 델리게이트 설정하기

func userDidChangeLogo(image1: UIImage) { 
    pickedImage = image1 
} 

나는 아래와 같이 prepareForSegue 기능을 사용하여 대리자를 설정하는 데 사용 : 지금은 탭 응용 프로그램 변경, 그러나,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "SettingsIdentifier" { 
     let viewController:SelectALogoViewController = segue.destinationViewController as SelectALogoViewController 
     viewController.delegate=self 

     if pickedImage != nil { 

      viewController.pickedImage = pickedImage 
     } 



    } 
} 

이것은 잘 작동하고 나는 logoSelectionDelegate을 설정할 때 "설정"탭을 누릅니다. 지금은이 작업을 수행하는 방법을 확실 해요, 나는 TabBarController.swift 파일에 내 위임 기능을 구현의 logoSelectionDelegate로 내 TabBarController를 설정 한 후 아래와 같이 logoSelectionDelegate 시도하고 설정 didSelectViewController 방법을 사용 하였다

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) -> Bool { 

    if (tabBarController.selectedIndex == 1) { 

     let viewController:SelectALogoViewController! = viewController as? SelectALogoViewController 
     viewController.delegate=self 

     if pickedImage != nil { 

      viewController.pickedImage = pickedImage 
     } 

     println("Yes") 
    } 



    return true 



} 

나는이 작업을 얻을 수 있으며, 여러분의 의견을 환영/

+0

누가 로고 선택 도구를 설정 탭의 TabBarController 또는 UIViewController로 설정 하시겠습니까? – vacawama

+0

안녕하세요 Vacawama, 저는 방금 NSUserDefaults를 사용하여 로고를 저장하도록 디자인을 변경했습니다. TabBarControllers 사이의 위임은 UINavigationControllers를 사용하여 컨트롤러 사이에 "segue"가 없으므로 까다로운 문제입니다. – Tom

+0

NSUserDefaults는 데이터를 전달하지 않고 환경 설정을 저장하기위한 것입니다. 그것은 효과가 있지만 의도 된 목적은 아닙니다. 내 대답은 여기에 탭간에 데이터를 전달하고 공유하는 방법을 제공합니다. 보세요. http://stackoverflow.com/a/27619420/1630618 – vacawama

답변

0

당신이 함께 탭 표시 줄의 뷰 컨트롤러에 액세스 할 수 있습니다 응답 : 직접 메소드를 호출하는 것입니다

let viewController = self.tabBarController?.viewControllers?[1] as? SelectALogoViewController 
    viewController?.delegate = self 

또는 다른 옵션을 에이 위임/프로토콜 구문을 모두 제거하십시오.

let viewController = self.tabBarController?.viewControllers?[1] as? SelectALogoViewController 
    viewController?.doSomething() 
관련 문제