我想创建一个自定义的tableView类,可以在任何视图Controller中使用。我必须创建tableview对象并设置tableview的数组和框架。然后这个tableview将在我的视图中添加为子视图。并给我一个点击事件。
我只是想避免在每个viewController类中编写tableview数据源和委托方法。
答案 0 :(得分:0)
获取viewController或tableviewController类,并在那里编写所有委托和数据源方法。现在在您查看控制器的位置,您想将其作为子视图调用tableview类并将其添加为子视图。
EX:
TableviewContrller *libaray =[TableviewContrller new];
[libaray willMoveToParentViewController:self];
[self.view addSubview:libaray.view];
[self addChildViewController:libaray];
隐藏在tableview控制器类中编写此代码
[self.view removeFromSuperView];
当您使用可重用的类时,您需要将数组信息发送到该类。除此之外,最好将类名或设置标记值发送到tableview
所以在你的tableview类中写这个
-(id)initWithInformationArray :(NSMutableArray *)dataArray andTagValueforTableview :(int) tagValue
{
self = [super init];
if (self != nil)
{
NSLog(@"%@", dataArray);
}
return self;
}
现在子查看将是这样的
TableviewContrller *libaray =[[TableviewContrller alloc]initWithInformationArray:YOURARRAY andTagValueforTableview:TAGVALUE];
[libaray willMoveToParentViewController:self];
[self.view addSubview:libaray.view];
[self addChildViewController:libaray];
希望这会有所帮助。
答案 1 :(得分:0)
可能你可以使用UITableViewController。
UITableViewController是UIViewController的子类,当您创建UITableViewController的子类时,该模板具有tableview数据源和委托方法的常用方法。
答案 2 :(得分:0)
您需要创建一个自定义类,并在该类中为UITableView创建自己的委托。现在,无论何时创建UITableView,都将该自定义类指定为UITableView的类。 如果您不知道如何创建自定义代理,请查看以下链接:
答案 3 :(得分:0)
您可以创建BaseTableView类。
@interface BaseTableView : UITableView <UITableViewDelegate, UITableViewDataSource>
{
NSArray* listObject;
}
@property (nonatomic, retain) NSArray *listObject;
-(id) initWithFrame:(CGRect)frame style:(UITableViewStyle)style;
@end
@implementation BaseTable
@synthesize listObject;
-(id) initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
if(self = [super initWithFrame:frame style:style])
{
self.dataSource = self;
self.delegate = self;
}
return self;
}
-(void)setListObject:(NSArray *)listObjectRef
{
[listObject release];
listObject = [listObjectRef retain];
[self reloadData];
}
-(void) dealloc
{
[listObject release];
[super dealloc];
}
@end
继承此类以供特定用途,并根据需要覆盖以下方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
在ViewController类中使用以下代码
SpecificTableView *table = [[SpecificTableView alloc] init];
[table setListObject:((FRFTReportList*)obj)];
希望这会有所帮助。