0

講義9で、先生はnumberOfSectionsInTableView:メソッドがデフォルトで1を返すと言いましたが、私が自分のプロジェクトを作成したとき、デフォルトで0を返すことがわかり、テーブルビューセルが消えました!問題がどこにあるかを見つけ、numberOfSectionsInTableViewを返すことで修正しました:return 1、問題はなくなりました。だから、それはスタンフォードが間違いを犯したことを意味しますか?

UITableViewControllerの新しいサブクラスを.mファイルに追加すると、Xcodeは次のコードを生成しました。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 0;
}

ちなみに私はXcode4.3.3を使用しています...

4

3 に答える 3

6

デフォルト値の意味を誤解しています。アップル、教師、または誰かが、メソッドのデフォルトの戻り値が何かであると述べた場合、そのメソッドが実装されていない場合は常に、このように動作することを意味します。

独自のメソッドを作成したとき、値 0 が返されました。テンプレートを使用する場合、そのテンプレートはメソッドを上書きして 0 に設定します。デフォルトの動作が必要な場合は、メソッドを削除するだけです。

この種のデリゲート メソッドには、ほとんどの場合、デフォルト値があります。ヘッダー ファイルの Delegate 実装をコントロール クリックすると、ほとんどの場合デフォルト値を持つメソッドである @Optional メソッドが表示されます。

于 2012-08-14T04:19:50.833 に答える
1

「デフォルト」とは、UITableViewDataSource実装していない場合numberOfSectionsInTableView:、値1が想定されることを意味すると思います。Xcode テンプレートには上記のコード (0 を返す) が含まれる場合がありますが、これはフレームワークのデフォルトと同じではありません。

于 2012-08-14T04:17:13.410 に答える
0

私たちのスタンフォードの友人は正しいです。デフォルトは 1 です。このメソッドを含めることはめったにありません。念のため、作業中のアプリからメソッドを削除してテストしましたが、確かに、1 つのセクションだけを削除しました。バージョン 1.0 から現在のバージョンまでのアプリを開発しました。

デリゲートが適切なクラスに設定されていることを確認してください。また、xib にファイル所有者の正しいクラス名があることを確認してください。それは時々私を取得します。

于 2012-08-14T04:06:58.403 に答える