2014-11-25 2 views
0

두 개의 탭이있는 간단한 응용 프로그램을 작성합니다. "백색 잡음"탭과 "로그"탭. 화이트 노이즈 사운드가 재생되거나 중단되면이 데이터를 기록하여 사운드가 재생되거나 중지 된 날짜와 시간을 표시합니다. 내 유일한 문제는 내가 "로그"탭을 클릭했을 때 log 배열을 전달하는 방법을 알아낼 수 없다는 것입니다. 나는 "화이트 노이즈"탭에 다음 코드를 사용하여 시도 :탭 컨트롤러 레이아웃을 사용할 때 두보기 컨트롤러간에 데이터 전달

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var logView = segue.destinationViewController as SecondViewController 
    logView.log.append("Testing 123") 
} 

그러나 나는 탭 바 컨트롤러, 또 다른 하나의보기 컨트롤러의 전환과 함께 기술적으로 segue 아니라는 것을 깨닫게했다. 그래서 내 질문은 탭 컨트롤러를 사용하여보기 컨트롤러간에 데이터를 전달하는 것입니다? 내가 CustomTabBarControllerClass라는 새로운 클래스를 생성 한

업데이트. 내가 인터페이스 빌더에서 "사용자 정의 클래스"로 CustomTabBarControllerClass을 설정 한

class CustomTabBarControllerClass: UITabBarController, UITabBarControllerDelegate { 

    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 
     println("Test 123!") 
    } 

} 

: 다음은이 클래스 내 코드입니다. 그러나 내가 탭을 전환 할 때 println("Test 123!")이 여전히 콘솔에 표시되지 않습니다.

답변

0

UITabBarController에는 위임자가 있습니다. tabBarController:didSelectViewController: 메서드를 사용하면 원하는 것을 성취 할 수 있습니다.

Apple 설명서를 찾을 수 있습니다. here

+0

고맙습니다. "White Noise"뷰 컨트롤러 클래스에'UITabBarControllerDelegate'를 추가했습니다. 그런 다음 언급 한 기능을 구현했습니다. 다음 함수에 다음 코드를 추가했습니다 :'println ("탭 전환")'. 그러나, 이것은 여전히 ​​나를 위해 작동하지 않았다. 콘솔에 아무것도 인쇄되지 않았습니다. 해야 할 일이 있습니까? – three3

+1

포함 된 ViewController가 아니라 UITabBarController의 대리자를 설정하려고합니다. UITabBarController를 확장하는 클래스를 생성 한 다음 인터페이스 빌더에서 UITabBarController 요소의 클래스로 설정하여이를 수행 할 수 있습니다. 이 클래스에서는 awakeFromNib을 다음과 같이 덮어 씁니다. - (void) awakeFromNib { self.delegate = self; } – bert

+0

"탭을 전환하는"기능을 새 클래스에 추가하십시오. – bert

관련 문제