web-dev-qa-db-ja.com

ストーリーボード「メイン」ですが、UITableViewControllerの使用時にUITableViewを取得しませんでした

私はこれを行ってきました tutorial 、 "Option 2:Prototype Cells"すべてのステップを暗示しましたが、次のコードでエラーが発生します。

@interface MTViewController : UITableViewController

@end

エラーメッセージは次のとおりです。

ストーリーボード「メイン」から識別子「UIViewController-BYZ-38-t0r」を持つインスタンス化されたView Controllerが、UITableViewを取得しませんでした。

これが私が試したものです-UITableViewControllerUIViewControllerに変更すると、エラーはなくなりました。ただし、テーブルビューは空白のままです。これがなぜなのか教えてもらえますか?

21
Fred Shmed

ストーリーボードで、UITableViewControllerのルートビューをUITableViewにする必要があります。

Interface Builder Table View Controller

Interface Builder Custom Class

45
Jarrod Smith

スーパークラスをUIViewControllerに変更するか、ストーリーボードのコントローラーをTableView Controllerに変更してください

@interface MTViewController : UIViewController, UITableViewDataSource, UITableViewDelegate

@end
18
Bob

Table View Controllerの新しいインスタンスをストーリーボードにドラッグし、以前のコントローラーで作成したセルを新しいものにコピーします。

このエラーはおそらく、XTableが作成したUITableViewControllerではないデフォルトのUIViewControllerを使用したために発生しました。

7

私はあなたとまったく同じ問題に出会いました。おそらく、ストーリーボードでUITableViewControllerの代わりにUIViewControllerを使用しています。

注:ストーリーボードのカスタムUITableViewControllerのサブクラスのみでは不十分です。違いがわかります: IViewControllerとUITableViewControllerの違い

したがって、ライブラリからUITableViewControllerをドラッグして、すべてのもの(セル)をそこに移動する必要があります。破損している場合は、バインディングと自動レイアウトを確認することを忘れないでください。

そしてもちろん、TableViewをUIViewControllerのルートに移動することはできません。そのようには動作しません。 =)

5
RockingDice

私もこの問題を抱えています。もともとプレーンUIViewControllerを作成してから、UITableViewControllerを使用することにしました。問題は、新しいコントローラーでストーリーボードIDを設定するのを忘れて、古いコントローラーでそれを別のものに変更することです。そうしないと、ストーリーボードから古いコントローラーをインスタンス化し、この問題が発生します。

3
luky

実際には、UITableViewControllerではなくUIViewControllerを使用しています。デフォルトのView Controllerを削除し、ストーリーボードに新しいTableViewControllerをドラッグします。 ViewControllerにはTableViewがありませんが、セルをロードしようとしているためです。

簡単な解決策は次のとおりです。ViewControllerを削除してTableViewControllerを追加

次に、クラス名をMTViewControllerまたはYour Class Nameに変更する必要があります

2
iOS

dataSourceがselfに設定されていることを確認してください。

0
Gontse Ranoto