2015-02-02 6 views
1

보유하고있는 클래스가 viewController에 연결되어 있지 않은 경우 어떻게 구현할 클래스 함수를 사용할 수 있습니까?클래스 함수를 통해 다른 Swift 파일에서 Segue 수행

+0

를, 그것은 가능한 곳을 인스턴스를 만들 필요없이 클래스를 가져옵니다. 'IBOutlet'에서'YourClass.function()'을 호출하십시오. –

+0

@IanMacDonald 그 기능이 있습니다. 나는 호출 된 함수가 segue를 수행하기를 원한다. 그게 가능하니? –

+0

정의에 의한 클래스 함수는 클래스의 특정 인스턴스와 관련이 없으므로 'performSegue ...'와 같은 인스턴스 메소드 나 'storyboard'와 같은 인스턴스 속성에 액세스 할 수 없습니다. 인스턴스 함수가 ​​아닌 클래스 함수가 ​​있어야합니다. 안토니오의 답변에 사용 된 인스턴스 함수가 ​​실제로있는 것처럼 들리지만. –

답변

6

, 당신은 뷰 컨트롤러의 인스턴스가 필요합니다 - 예를 들면 :이 낙담 그러나

class MyViewController { 
} 

class MyClass { 
    showNextView(fromViewController: UIViewController) { 
     fromViewController.performSegueWithIdentifier("segue_id", sender: fromViewController) 
    } 
} 

상호 작용의 종류. 보기 컨트롤러에게보기를 표시하는 방법을 알려주지 마십시오. 직접보기 만하면됩니다.

class MyViewController { 
    ... 
    func goToNextView() { 
     performSegueWithIdentifier("segue_id", sender: self) 
    } 
} 

및 전환하기 위해 그것을 사용 :

그래서, 당신의 뷰 컨트롤러의 인스턴스 메서드를 만드는 제안은 클래스 레벨 함수의 경우

class MyClass { 
    showNextView(fromViewController: MyViewController) { 
     fromViewController.goToNextView() 
    } 
} 
+1

안녕하세요, 다음과 같이 moveToScreen() 함수가있는 HomViewController가 있습니다 : func moveToScreen() {self.performSegueWithIdentifier "ListReport", 보낸 사람 : 자기)}. 그리고 "ListReport"식별자를 설정합니다. 이제 파일을 만들 때 : class Build {let home = HomViewController()} home.moveToScreen()}은 오류로 인해 충돌합니다. 식별자가 'ListReport'인 segue가 없습니다. 왜 그것은 추락입니까? – AmyNguyen

+0

MyClass의 @Antonio'fromViewController.goToNextView()는 호출되지 않습니다. 나는 중괄호 안에 print 문을 넣었고 아무 것도 출력되지 않았다. – bibscy

+0

@Antonio, 여기에 질문을 게시했습니다. http://stackoverflow.com/questions/42458405, 도와 주시면 감사하겠습니다. 감사 – bibscy

1

현재 표시되는보기 컨트롤러에 "performSegueWithIdentifier"를 사용하여 segue하도록 지시 할 수 있습니다.

분명히 보이는 컨트롤러에 대한 참조가 필요합니다. 당신의 방법을 사용 내부

:

SEGUE가에서 유래 어디 SEGUE을 수행하기 위해
currentViewController.performSegueWithIdentifier("push", sender: currentViewController) 
+0

viewController가 아닌 클래스 함수를 호출하려고합니다. 내 함수를 호출하여 어떻게 segue를 수행 할 수 있습니까? 예를 들어. licenseAgent.checkLicense() 해당 기능 내에서 라이센스를 확인하고 현재 라이센스가없는 경우 사용을 로그 아웃하고 싶습니다. –

+0

당신은 현재 뷰 컨트롤러의 레퍼런스를 해당 함수/클래스에 삽입하고 "performSegueWithIdentifier"메서드를 호출해야합니다. – joakim