2

次の問題があります。上記のようなViewControllerを作成しました

@interface MyViewController : UIViewController {
    IBOutlet UITableView *myTableView;
}

@property (nonatomic, retain) IBOutlet UITableView *myTableView;

Interface Builder の myTableView を対応する nib の UITableView にリンクしました。MyViewController をサブクラス化して、YourViewController を次のように作成しました。

@interface YourViewController : MyViewController {

}

次に、TabBarController から、タブ項目の YourViewController を読み込みます。最後に MyViewController が実際に呼び出されていることがわかりますが、エミュレーターにはテーブル ビューが表示されません。

MyViewController のデバッグを試みましたが、IBOutlet が nil のようです。

何故ですか?

4

5 に答える 5

0

コードを使用して動的に追加すると、それだけが機能します。ペン先を使用していません。

于 2011-02-07T13:32:06.620 に答える
0

おそらく、MyViewController の nib ファイルがまったくロードされていません。YourViewController に特定の nib ファイルを使用していますか? どのようにYourViewControllerを作成していますか。

また、YourViewController で「awakeFromNib」メソッドを定義し、そこから [super awakeFromNib] を呼び出すこともできますか?

ただし、問題を理解するには、オブジェクトをロードする方法と、Nibs を使用するかどうか、どこで使用するかを明確に説明する必要があります。

于 2011-02-07T13:25:05.497 に答える
0

(つまり、UITableViewmyTableView) には、データ ソースとそのコントロールのデリゲートが必要です。また、コントローラーには xib の Table ビューへのリンクが必要です。

  1. コントローラーのインターフェイス セクションでテーブル デリゲート プロトコルを宣言します。

  2. IB を使用して、xib の TableView を owner file:delegates にリンクします。

  3. IB を使用して、ファイル所有者 myTableView を xib の tableView にリンクします。

それが役立つことを願っています。

于 2011-02-07T14:01:14.883 に答える
0

継承と IBOutlets および IBAction で大きな問題が発生しました。それを避け、別の方法で共有物を作成することをお勧めします。

たとえば、メモリの警告が表示されたときにバグに見舞われました。アウトレットとアクションが、基本クラスと派生クラスで定義されている場合、適切に再接続されませんでした。

于 2011-02-07T13:12:13.933 に答える
-1

MainWindow.xib にナビゲーション スタック全体があると仮定すると、

  • MainWindow.xib を開く
  • YourViewController を選択します (または、UITableViewController をサブクラス化するコントローラーが呼び出されます)
  • 属性インスペクターを選択
  • 「NIB Name」プロパティで正しい YourViewController (または任意の名前) が選択されていることを確認します

私はこれとまったく同じ問題を抱えていましたが、これで解決しました。

于 2012-04-06T05:01:56.837 に答える