私はこれがどのように疑問に思っています:
プログラムで行うことができますか?uitableviewデータソースを設定してFadingTableView
クラスに委任するだけですか?IBでカスタムクラスを設定すると、正確には何が起こっているのでしょうか。
ありがとう。
私はこれがどのように疑問に思っています:
プログラムで行うことができますか?uitableviewデータソースを設定してFadingTableView
クラスに委任するだけですか?IBでカスタムクラスを設定すると、正確には何が起こっているのでしょうか。
ありがとう。
ここでは、テーブルビューインスタンスが実際にはのインスタンスであることをIBに伝えていますFadingTableView
。
このテーブルビューをプログラムで作成する場合は、これらの行を使用します
FadingTableView *tableView = [[FadingTableView alloc] init.....];
IBにそのクラスを設定する理由は、IBにオブジェクトがUITableView
組み込まれているが、IBに存在しないテーブルビューが必要なため、クラス名をそこに配置して、のFadingTableView
代わりにインスタンスを作成するためですUITableView
。
いいえ、データソースやデリゲートの接続には使用されません。
目的を意味するものではないので、質問について詳しく説明してください。xibを介してデータソースとデリゲートを接続することと、クラスを介してプログラムで宣言することの違いを尋ねていると思います。両者の間に大きな違いはありませんが、論理的にはIBActionとIBOutletは、オブジェクトがインターフェイスビルダーを介して定義されたことをコンパイラに知らせるための単なる識別子です(現在、xCodeの新しいバージョンではxcodeと統合されています)。IBOutletが定義されている間、IBActionは無効に定義されています。Appleの定義は次のとおりです。 -
#ifndef IBOutlet
#define IBOutlet
#endif
#ifndef
IBAction #define
IBAction void
#endif
どちらもコンパイラの識別子として機能し、特定のメソッドがインターフェイスビルダーを介して定義されていることをコンパイラに通知します。
これは、ソースコードで提供したUITableViewのサブクラス(明らかに)を使用し、nibがロードされたときにそれをインスタンス化することです。datasource
ITは、接続されているという意味ではありませんdelegate
。
コードで同じことを行うには、xibファイルからTableViewを削除し、たとえば、、外観、、およびその他すべての属性を手動で設定して、そのxibファイルを表すViewControllerで作成する必要がありますviewDidLoad
。[[FadingTableView alloc] init…]
frame
delegate
datasource
使用できobject_setClass(tableView, [CustomClass class]);
、含める必要があります#include <objc/runtime.h>