2012-05-23 6 views
1

다른 viewController에서 segue를 실행하려고합니다. 일반적으로 segue는 TVC에서 Cell을 탭하여 시작됩니다. 그러나 앱이 처음 시작될 때 사용자가 설정을해야합니다.다른 viewController에서 segue를 시작하십시오.

저는이 뷰어를 앱이 표시하는 첫 번째 viewController (또는 TVC)에서 시작하려고합니다. 그래서 SettingsTVC (segue가있는 곳)에 public 메소드를 만들었습니다. 내가 버튼을 클릭에 다음과 같이 최초의 ViewController에

-(void)setStuff{ 

    [self performSegueWithIdentifier:@"setStuffFromSettings" sender:self]; 

} 

:이 방법의 구현은 다음과 같습니다

[self.tabBarController setSelectedIndex:4]; 

SettingsTVC *settings=[[SettingsTVC alloc]init]; 
[settings setStuff]; 

Methos는 올바르게 호출되는 NSLogs에 따르면이 있지만, 앱에 오류가 발생하면 다음 메시지가 표시됩니다.

'Receiver (<SettingsTVC: 0x812d730>) has no segue with identifier 'setStuffFromSettings'' 

아마도 내가 너무 많이 기대합니까? 나는 꽤 복잡한 일을하기 때문에 또 다른 segue를 설정할 수는 없다. viewController를 여러 곳에서 액세스 할 수 없기를 바란다. (나는 애플이 그 중 하나를 좋아하지 않는다고 생각한다).

아이디어가 있으십니까? 미리 감사드립니다!

답변

2

performSegue에서 호출하는 VC에 연결된 ID가있는 segue가 없습니다. 아래 이미지를 참조하십시오. 귀하의보기 컨트롤러 사이의 연결을 올바르게 명명해야합니다.

연결을 확인하고 이름이 일치하는지 확인하십시오.

Segue Image

+0

감사합니다.하지만 정확한 이름을 지정하고 참조해야합니다. 그게 내가 실수로 혼란에 빠졌던 이유입니다. 실제로 테스트로 segue가 발생한 viewController에 버튼을 추가하고 [self performSegueWithIdentifier : @ "setStuffFromSettings"sender : self]를 추가했습니다. 코드이며 작동합니다. 그것은 공용 메서드를 통해 다른 viewControler에서 시작하려고 할 때 작동하지 않습니다. – Marcal

+0

그것은 UITableViewCell에 연결되어 있습니다 ... – Marcal

+0

어떤 방식으로 연결했는지는 중요하지 않지만 항상 Segue 's를 VC에 연결 한 다음 didSelectRowAtIndexPath 메서드에서 performSegue를 호출합니다. 더 이상 도움이 필요하면 프로젝트를 압축하여 이메일로 보내거나 모든 Segue의 이름과 문제가있는 VC의 코드와 함께 스토리 보드 스크린 샷을 게시해야합니다. –