如何创建Common Custom TableView类?

时间:2014-04-01 05:42:16

标签: ios iphone objective-c xcode

我想创建一个自定义的tableView类,可以在任何视图Controller中使用。我必须创建tableview对象并设置tableview的数组和框架。然后这个tableview将在我的视图中添加为子视图。并给我一个点击事件。

我只是想避免在每个viewController类中编写tableview数据源和委托方法。

4 个答案:

答案 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的类。 如果您不知道如何创建自定义代理,请查看以下链接:

  1. http://www.alexefish.com/post/522641eb31fa2a0015000002
  2. http://ios-blog.co.uk/tutorials/quick-tip-create-your-own-objective-c-delegate-protocol/
  3. 希望这会对你有所帮助:)。

答案 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)];

希望这会有所帮助。