[英]UITableView Custom Class programmatically?
我想知道這是怎么回事:
可以通過編程方式完成嗎? 它只是設置uitableview數據源並委托給FadingTableView
類嗎? 通過在IB中設置自定義類到底是怎么回事?
謝謝。
在這里,您告訴IB表視圖實例實際上是FadingTableView
的實例。
如果要以編程方式創建此表視圖,請使用這些行
FadingTableView *tableView = [[FadingTableView alloc] init.....];
為什么在IB中設置該類是因為IB具有內置對象,因此UITableView
但是你想要你的表視圖在IB中不存在,因此你將你的類名放在那里,以便它將創建FadingTableView
而不是UITableView
的FadingTableView
。
不,它不用於連接數據源或委托。
請詳細說明你的問題,因為它沒有表明它的目的。我認為你要求通過xib連接數據源和委托之間的差異,並通過類以編程方式聲明它。它們之間沒有太大的區別,但邏輯上如果你看到IBAction和IBOutlet只是讓編譯器知道對象已經通過接口構建器定義的標識符(現在在xCode的更高版本中與xcode集成).IBAction被定義為void,而IBOutlet剛剛定義.Apple的定義如下: -
#ifndef IBOutlet
#define IBOutlet
#endif
#ifndef
IBAction #define
IBAction void
#endif
兩者都充當了編譯器的標識符。它只是告訴編譯器某些方法是通過接口構建器定義的。
這樣做是使用您在源代碼中提供的UITableView的子類(顯然),並在加載nib時實例化它。 IT並不意味着datasource
和delegate
是連接的。
要在代碼中執行相同的操作,您必須從xib文件中刪除TableView並創建它,例如在ViewController的viewDidLoad
中使用[[FadingTableView alloc] init…]
表示該xib文件,設置frame
,外觀, delegate
, datasource
和手動所有其他屬性。
你可以使用object_setClass(tableView, [CustomClass class]);
並且必須包含#include <objc/runtime.h>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.