62

私のアプリケーションは iOS 5.1 で動作しますが、iOS 6 シミュレーターでは次のエラーが発生します。

キャッチされていない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。

サブクラスUITableViewController化していますが、変更したくありません。

テーブルビューはプログラムで作成され、Tab Bar ControllerMainListViewController.xibからロードするダミーがあります。Mainwindow.xib

また、このペン先の問題を解決するために、 をMainListViewController.xib削除して Tab Bar Controller から削除し、AppDelegate で をMainWindow.xib作成して Tab Bar Controller に追加しようとしましたが、それでも同じエラーが発生します。MainListViewControllerUITabBarItem

4

13 に答える 13

102

サブクラスの NIB がある場合は、UITableViewControllerそのviewアウトレットをに接続する必要UITableViewがあります。

削除MainListViewController.xibしてすべてコードで実行するのは正しいですが、それが機能しなかった理由は、ビルドおよび実行時に古い XIB が削除されないためです。そのため、シミュレーターからアプリを削除して、もう一度やり直してください。それでうまくいくはずです。

于 2012-06-27T08:28:21.817 に答える
29

ストーリーボードを使用して同様の問題がありました。他の人の利益のために私のソリューションを投稿します。重要なのは、ファイルの所有者を UITableView のサブクラスに正しく設定した場合でも、view プロパティが Table View に設定されていることを確認する必要があるということです。私はストーリーボードを使用していますが、ペン先にも同じことが当てはまるはずです。「ドキュメント アウトライン」を展開して、ストーリーボードの階層を確認します。以下にいくつかのスクリーンショットを含めます。これを解決する簡単な方法は、ドキュメント アウトラインでビューを確認することです。その子として持っているテーブルビューを削除します。もう一方のテーブルビューをビュー プロパティの上にドラッグします。終わり。スクリーンショットで紹介します。

ここに画像の説明を入力

2 つのテーブルに注目してください。table1 とそのセルを削除します。

ここに画像の説明を入力

良い。table2 をビューにドラッグすれば完了です。今すぐ動作するはずです。基本的に、UITableViewController のサブクラスがある場合、ビューの代わりにテーブル ビューが必要です。そうしないと、クラッシュします。

ここに画像の説明を入力

于 2013-10-07T20:03:41.113 に答える
17

理由は次のとおりです。

.h ファイルで、UIViewController のサブクラスであることを確認します。それは問題を解決します。

于 2013-05-31T11:00:39.397 に答える
4

ストーリーボードと 1 つのテーブル ビューを使用すると、解決策が見つかります。

重要なのは、カスタム クラス (newViewController) を作成するときに、それが UITableViewController のサブクラスであることを確認することです。作成したら (テーブルの) テーブル ビュー コントローラーに移動し、Identity Inspector で先ほど作成したカスタム クラス (newViewController) を選択します。

それは私にとってはうまくいきます。私のコメントが誰かを助けることを願っています。

于 2014-01-29T05:47:24.290 に答える
3

これが発生する理由はいくつかあります。

  1. UITableViewDelegate と UITableViewDataSource を .h に追加していない可能性があります

    @interface TableController : UIViewController {

  2. 宣言されたアウトレットをストーリーボード/ペン先のコンポーネントに接続していない可能性があります

  3. .h で UITableView または vide verser の代わりに UIViewController を呼び出している可能性があります

@interface TableController : UIViewController

また

 @interface TableController : UITableViewController 
于 2013-11-07T02:30:15.377 に答える
3

テーブルビューをビューアウトレットとして接続してください。アウトレットはUITableViewに接続する必要があります。

于 2013-12-02T12:38:02.507 に答える
1

@smileBotの回答により、ソリューションが非常に簡単で、iOSによって発生したエラーが理にかなっていることがわかりました

キャッチされていない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。

ほとんどの場合、ペン先はビューを返していないため、ペン先のビューコントローラーは UITableView を返さないと基本的に言っています。これは、Xcode IDE で新しい ViewController を作成するときにデフォルトで作成されます。

解決策は、そのビューを削除するのと同じくらい簡単です-これは標準に反するかもしれません-しかし、先に進んで選択してバックスペースを取り、ViewController内にUITableViewをドラッグアンドドロップすると、このUITableViewがTableViewController内のルートビューとして機能します.

これは、UITableViewController を直接サブクラス化するクラスにのみ必要であることに注意してください。

幸運を。

于 2015-08-18T05:56:59.490 に答える
1

私はこの問題を抱えていましたが、それを解決するのは簡単なことでした。

すでに作成している場合はペン先を保管してください...

(XIBファイル)に移動し、オブジェクトライブラリからtableViewコンポーネントをXIBファイルのiPhone画面に追加すると、動作するはずです:)

于 2012-12-25T20:14:58.723 に答える
0

これは私にとってはうまくいきました。お役に立てば幸いです。

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;
}

ストーリーボードで、View Controller がこのクラスを指していることを確認してください。

ストーリーボード

于 2014-09-04T04:15:07.503 に答える
0

私もこの問題に遭遇しましたが、xcode 6.2 でストーリーボードを使用しました。対応するビューをストーリーボードから削除し、テーブル ビュー コントローラーをオブジェクト ライブラリからストーリーボードに再ドラッグすると、機能します。

于 2015-04-30T02:19:15.700 に答える