IT TIP

펜촉이지만 UITableView를 얻지 못했습니다.

itqueen 2020. 12. 13. 11:36
반응형

펜촉이지만 UITableView를 얻지 못했습니다.


내 응용 프로그램은 iOS 5.1에서 작동하지만 iOS 6 시뮬레이터에서는 다음 오류가 발생합니다.

포착되지 않은 예외 'NSInternalInconsistencyException'으로 인해 앱 종료, 이유 : '-[UITableViewController loadView]가 "MainListViewController"nib을로드했지만 UITableView를 얻지 못했습니다.'

서브 클래 싱 중이며 UITableViewController변경하고 싶지 않습니다.

tableview는 프로그래밍 방식으로 생성 MainListViewController.xib되며 Mainwindow.xibTab Bar Controller 에서로드 할 더미 있습니다.

나는 또한 이 펜촉 문제를 제거 하기 위해을 삭제 MainListViewController.xib하고 MainWindow.xib탭 바 컨트롤러 에서 제거하고 MainListViewControllerAppDelegate에서 생성 하고 탭 바 컨트롤러에 추가 하려고 시도 UITabBarItem했지만 여전히 동일한 오류가 발생합니다.


당신이에 대한 NIB있는 경우 UITableViewController서브 클래스를 다음의 view콘센트가 있어야 A와 후크 최대 수 UITableView.

MainListViewController.xib코드에서 모든 것을 삭제 하고 수행하는 것이 옳지 만 작동하지 않은 이유는 빌드 및 실행시 이전 XIB가 삭제되지 않기 때문입니다. 따라서 시뮬레이터에서 앱을 삭제하고 다시 시도하십시오. 그러면 작동합니다.


스토리 보드를 사용하여 비슷한 문제가 발생했습니다. 다른 사람들의 이익을 위해 내 솔루션을 게시 할 것입니다. 핵심은 파일의 소유자를 UITableView의 하위 클래스로 올바르게 설정 한 경우에도 view 속성이 Table View로 설정되어 있는지 확인해야한다는 것입니다. 스토리 보드를 사용하고 있지만 펜촉에도 같은 종류가 적용되어야합니다. 스토리 보드의 계층 구조를 볼 수 있도록 "문서 개요"를 확장합니다. 아래 스크린 샷을 포함하겠습니다. 이를 해결하는 빠른 방법 은 문서 개요에서 보기 를 보는 것 입니다. 하위로 가지고있는 테이블 뷰를 삭제하십시오. 다른 tableview를 view 속성 위로 드래그합니다. 끝난. 스크린 샷으로 보여 드리겠습니다.

여기에 이미지 설명 입력

두 개의 테이블에 주목하십시오. table1 및 해당 셀을 제거하려고합니다.

여기에 이미지 설명 입력

좋은. 이제 table2를 뷰로 드래그하면 완료됩니다. 지금 작동합니다. 기본적으로 UITableViewController의 하위 클래스가있는 경우 뷰 대신 테이블 뷰가 있어야합니다. 그렇지 않으면 충돌이 발생합니다.

여기에 이미지 설명 입력


이유는 다음과 같습니다.

.h 파일이 UIViewController의 하위 클래스인지 확인합니다. 문제를 해결할 것입니다.


요컨대, 사용자 정의 UITableViewController 하위 클래스를 UIViewController !! 너는 이것을 못해. UIViewController에 UIViewController 하위 클래스를 제공해야합니다.


UITableView를 Top View로 사용하는 경우.

이렇게 :

여기에 이미지 설명 입력

컨트롤러에서 UITableViewController를 사용해야합니다.

class ItemsViewController: UITableViewController

Storyboatd의 View에서 UITableView를 사용하는 경우.

이렇게 :

여기에 이미지 설명 입력

UIViewController와 함께 UITableViewDelegate 및 UITableViewDataSource를 사용해야합니다.

class ItemsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

스토리 보드와 1 개의 테이블보기를 사용할 때 해결책을 찾았습니다.

핵심은 사용자 정의 클래스 (newViewController)를 만들 때 UITableViewController의 하위 클래스인지 확인하는 것입니다. 일단 생성되면 테이블 뷰 컨트롤러 (테이블의)로 이동하고 Identity Inspector에서 방금 생성 한 커스텀 클래스 (newViewController)를 선택합니다.

그것은 나를 위해 작동합니다. 내 의견이 누군가를 돕기를 바랍니다.


테이블 뷰를 뷰 아웃렛으로 연결하십시오. 아웃렛은 UITableView에 연결되어야합니다.


이것이 발생할 수있는 몇 가지 이유가 있습니다.

  1. .h에 UITableViewDelegate 및 UITableViewDataSource를 추가하지 않았을 수 있습니다.

    @interface TableController : UIViewController {

  2. 선언 된 콘센트를 Storyboard / Nib의 구성 요소에 연결하지 않았을 수 있습니다.

  3. .h에서 UITableView 또는 vide verser 대신 UIViewController를 호출 할 수 있습니다.

@interface TableController : UIViewController

또는

 @interface TableController : UITableViewController 

나는이 문제를 가지고 있었고 그것을 해결하는 것은 단지 하나의 간단한 일이었습니다.

이미 만든 경우 펜촉을 유지하십시오 ...

(XIB 파일)로 이동하여 개체 라이브러리의 tableView 구성 요소를 XIB 파일의 iPhone 화면에 추가하면 작동합니다. :)


이것은 나를 위해 일했습니다. 도움이되기를 바랍니다.

AppDelegate에서->

#import "TableViewController.h" // name of your TableViewController class

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//PUT
TableViewController *controller = [[TableViewController alloc]
                                  initWithStyle:UITableViewStylePlain];
    self.window = [[UIWindow alloc]
                   initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = controller;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    // Override point for customization after application launch.
    return YES;
}

스토리 보드에서 뷰 컨트롤러가이 클래스를 가리키는 지 확인하십시오.

스토리 보드


나는 또한이 문제가 발생했지만 xcode 6.2에서 스토리 보드를 사용했습니다. 스토리 보드에서 해당 뷰를 삭제하고 테이블 뷰 컨트롤러를 개체 라이브러리에서 스토리 보드로 다시 드래그하면 작동합니다.


@smileBot 대답은 솔루션이 매우 쉽고 iOS에서 발생한 오류가 의미가 있음을 깨달았습니다.

포착되지 않은 예외 'NSInternalInconsistencyException'으로 인해 앱 종료, 이유 : '-[UITableViewController loadView]가 "MainListViewController"nib을로드했지만 UITableView를 얻지 못했습니다.'

Their basically saying that nib's view controller is not returning a UITableView because it isn't, for most - your nib is returning a View - which is created for you by default when you create a new ViewController in the Xcode IDE.

The solution is as simple as deleting that View - which might feel against the norm - but go ahead and select it and backspace - then drag and drop a UITableView inside your ViewController and this UITableView will now act as your root view inside your TableViewController.

Keep in mind this is only necessary for classes directly subclassing UITableViewController.

Good luck.


나는 같은 문제가 있고 3 시간을 낭비한 후 그것을 발견했습니다 ... "이것은 실수입니다"나는 tableviewcontroller 클래스를 사용 하고이 클래스의 uiviewcontroller 참조를 제공합니다. 스토리 보드에서 uiviewcontroller를 사용하면 tableviewcontroller 클래스를 사용합니다. 따라서 tableviewcontroller 클래스를 삭제하고 ID 검사기의 스토리 보드에 "전체 코드를 붙여 넣기 만하면 논리를 붙여 넣지"컨트롤러 클래스를보기 위해 tableviewcontroller 클래스의 코드를 붙여넣고 현재 뷰 컨트롤러 클래스의 클래스 참조를 제공합니다.

참고 URL : https://stackoverflow.com/questions/11221802/nib-but-didnt-get-a-uitableview

반응형