如何在静态方法中设置委托和dataSource 。
+(void)method
{
UITableView *tv = [[UITableView alloc] init];
tv.delegate = self; // Warning: incompatible pointer type
tv.dataSource = self; // Warning: incompatible pointer type
}
答案 0 :(得分:7)
有两种可能性,
一:如果这是一个单例类(假设单例同时实现了数据源和委托方法)
+(void)method
{
UITableView *tv = [[UITableView alloc] init];
tv.delegate = [SingletonClass sharedInstance]; // This will return the singleton instance
tv.dataSource = [SingletonClass sharedInstance]; // This will return the singleton instance
}
二:如果不是单例类,修改方法签名以接受委托和数据源实例
+(void)methodWithDelegate:(id)delegate andDatasource:(id)datasource
{
UITableView *tv = [[UITableView alloc] init];
tv.delegate = delegate;
tv.dataSource = datasource;
}
希望有所帮助。
答案 1 :(得分:0)
你的SingletonClass View控制器类是这样声明的吗?
@interface SingletonClass : UIViewController <UITableViewDelegate, UITableViewDataSource>
然而,你所做的似乎是一个糟糕的设计