development

스토리 보드-식별자가있는 뷰 컨트롤러를 포함하지 않습니다

big-blog 2020. 5. 26. 19:10
반응형

스토리 보드-식별자가있는 뷰 컨트롤러를 포함하지 않습니다


다음과 같은 오류가 계속 발생합니다.

Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller 
with identifier 'drivingDetails'

이것은 코드입니다.

- (void)tableView:(UITableView *)tableView 
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

   UIViewController *controller =  [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
   controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
   [self.navigationController pushViewController:controller animated:YES];
}

난 이미 설정 한 identifierUIStoryboard하지만, 난 여전히이 오류를 받고 있어요.

여기에 이미지 설명을 입력하십시오



나중에 참조하기 위해 :

스토리 보드를 사용하여 iOS 6에서 개발 중입니다.

같은 문제가 발생했지만 검사기에서 "식별자"필드를 찾을 수 없습니다. 대신 "Storyboard ID"라는 필드를 식별자 이름으로 설정하십시오. 이 필드는 속성의 "ID 속성 표시"탭에서 찾을 수 있습니다.

[참고-아래 의견은 일부 사람들이 관리자의 스토리 보드 ID 바로 아래에 "복원 ID"필드를 설정해야한다는 것을 발견했습니다. "스토리 보드 ID 사용"을 클릭하는 것만으로는 충분하지 않습니다.]

참조를 위해 아래 이미지가 있습니다 (이 경우 식별자를 클래스와 동일하게 지정했습니다) 여기에 이미지 설명을 입력하십시오


에서 XCODE 7 | 8 | 9 ,

스토리 보드 ID를 변경하고 이와 같은 오류가 발생하면

단지 CLEAN 프로젝트 ( CMD + 시프트 + K )


결정된! 내 경우 DrivingDetails의 경우 segue의 식별자뿐만 아니라 tableViewController의 식별자도 DrivingDetails로 설정해야합니다 ... 사진을 확인하십시오.

여기에 이미지 설명을 입력하십시오

또한 내비게이션 뷰 컨트롤러를 제거하여 이제 2 개의 테이블 뷰 컨트롤러가 "푸시"애니메이션과 직접 연결되었습니다.

***** XCODE 7.0 편집 *****

storyboardId를 설정해야합니다 (이 경우 viewController가 Navigation 컨트롤러에 임베드 됨).

let lastMinVc  = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController

여기에 이미지 설명을 입력하십시오


때로는 용어 사이에 혼란이 있습니다.

// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)

참고 "StoryboardFileName"는 IS 파일 이름 스토리 보드의 아닌 ID, "StoryboardID"실제로입니다 수동으로 신원 관리자에서 설정 한 ID . 때로는 사람들이 둘 사이의 차이점에 대해 혼란스러워합니다. 첫 번째는 실제로 StoryboardID이고 두 번째는 ViewController 클래스 이름이라고 생각합니다.

스토리 보드 ID


Identity Inspector 탭에 Xcode 6.3.2의 Storyboard ID라는 이름이 있고 Storyboard ID 사용 옵션이 선택되어 있습니다. 여기에 이미지 설명을 입력하십시오


스토리 보드에 새 VC를 추가 한 후 시뮬레이터가 아닌 장치에서만이 문제가 발생했습니다. 여러 스토리 보드 현지화가 있었기 때문에 VC가 기본 스토리 보드에만 추가되었습니다. 다른 현지화를 제거하려고 시도했지만 그중 하나는 내 iPhone에서 사용되는 것입니다. 결국 나는 다른 언어 버전 재현했다 그들 각각의 새로운 VC합니다.


나는 그것을 발견했다 ... 스토리 보드에서보기 컨트롤러를 클릭하고 vc 속성 관리자에서 왼쪽에서 세 번째 아이콘을 클릭하십시오-scereen에서 통화 이름을 설정 한 아이콘은 '신분'이라고 표시됩니다. identity라는 단어를 클릭하면 storyboardID가 표시됩니다-코드에서 식별자를 추가하십시오.


신원 관리자 (왼쪽의 세 번째 아이콘)에서 "스토리 보드 ID"를 수정하면 작동합니다.

그렇지 않은 경우 오타가없는 것이 확실하면 프로젝트를 정리하십시오 ( "제품"-> "청소"또는 단순히 command + shift + K).


컴파일러는 다음과 같은 오류를 보여줍니다.

Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a 
ViewController with identifier 'SBAddEmployeeVC''

여기서 생성 된 스토리 보드의 객체는 ViewController를 포함하는 메인 스토리 보드가 아닙니다. 으로 스토리 보드 파일에 있는 우리의 작업으로 이름 Main.storyboard . 따라서 Main.storyboard 의 객체에 대한 참조가 필요합니다 .

다음 코드를 사용하십시오.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

다음 storyboardWithName은 작업중인 스토리 보드 파일의 이름이며 스토리 보드가 bundle있는 번들을 지정합니다 (예 :) mainBundle.


@Ravi Bhanushali와 동일한 문제를 가진 사람들을 위해 Swift 4 솔루션이 있습니다.

let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)


내 뷰 컨트롤러 중 storyboardIdentifier 속성 이 누락되었습니다 .

전에:

<viewController
    id="pka-il-u5E"
    customClass="YourViewControllerName"
    customModule="ModuleName"
    customModuleProvider="target"
    sceneMemberID="viewController">

후:

<viewController
    storyboardIdentifier="YourViewControllerName"   <----
    id="pka-il-u5E"
    customClass="YourViewControllerName"
    customModule="ModuleName"
    customModuleProvider="target"
    sceneMemberID="viewController">

식별자를 입력하는 동안 적절한 뷰 컨트롤러를 선택하지 않은 상태에서 절차를 한 번 더 반복하면 확인하십시오.


동일한 오류가 발생하여 프로젝트에서 다음 변경 사항을 변경하여이 문제를 해결할 수 있습니다. 관리자 패널에서 클래스 이름을 언급 한 후 문제가 해결되었습니다. 이동-> 오른쪽 패널 Identity Inspector 사용자 정의 클래스 섹션에서

클래스 : 클래스 이름 (ViewController)

ID 섹션 스토리 보드 ID : 스토리 보드 ID (viewController 이름)

스토리 보드 ID 사용 옵션을 클릭하면 문제가 해결 된 것입니다. 나는 그것이 당신을 도울 것입니다 ....


스토리 보드 ID로 식별자 (@ "drivingDetails")를 사용하십시오.


메인 스토리 보드에서 각각의 뷰 컨트롤러를 선택하고 스토리 보드 ID가 현재 이름을 가진 식별자에서 사용하고 있는지 확인하는 것은 매우 간단합니다.

여기 내 firstone은 storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier : "firstone")입니다! tabBarViewController


위의 모든 해결책을 시도했지만 아무도 효과가 없었습니다.

내가 한 일은 :

  • 프로젝트 청소
  • 파생 데이터 삭제
  • Xcode 재시작
  • 이전 답변 (IB 내부)에 표시된 StoryboardID를 다시 입력하십시오.

그리고는 효과가있었습니다. 충격적인 것은 인터페이스 빌더에서 Storyboar ID를 입력했으며 Xcode를 다시 연 후에 제거 / 삭제되었다는 것입니다.

이것이 누군가를 돕기를 바랍니다.


모든 것을 청소하고 Xcode를 닫아도 문제가 해결되지 않았습니다.

viewController를 삭제하고 새로운 식별자로 새로운 것을 만들어야했습니다.


XCODE DRAG N DROP PANE IS GONE !!!

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

참고 URL : https://stackoverflow.com/questions/8295471/storyboard-doesnt-contain-a-view-controller-with-identifier

반응형