多个UIView控制器中的一个UITableViewController

时间:2014-04-25 05:54:58

标签: ios objective-c uitableview uiviewcontroller

是否可以使用一个UITableViewController到多个UIViewControllers。如果是,怎么可能,提前谢谢。

我有3个屏幕(UIViewControllers)具有UITablewView相同的布局。那么,我可以为所有这些屏幕创建一个UITableViewController,我可以在所有屏幕(UIViewControllers)中使用它吗?如果是,请给我一些想法,不需要使用自定义单元格

3 个答案:

答案 0 :(得分:0)

如果您只是不想两次实现相同的委托和数据源方法,请在一个控制器中执行,并从中继承其他控制器。

答案 1 :(得分:0)

你似乎并不完全明白UITableViewController究竟是什么;它实际上是UIViewController的子类。

您的UIViewControllers不需要UITableViewController。如果您希望使用UIViewController,则应手动实施UITableView

鉴于tableView需要一个set delegate和datasource,我认为重复使用与多个ViewControllers相同的tableView可能有点复杂。除非你乐意将这项工作归功于单独的课程或展示的热交换。

答案 2 :(得分:0)

是的,但是你必须在所有3个viewcontrollers中添加uiitableview。

这里有一些例子..! enter image description here 将标记设置为该表视图为21

enter image description here

并在tableview实现文件中执行此类

的实现
@implementation LCsampleTableView

        UITableView *tableView1;
- (id)initWithCoder:(NSCoder *)aDecoder {

    // self = [super init];
    self = [super initWithCoder:aDecoder];

    if (self) {

        tableView1 =(UITableView *)[self viewWithTag:21];
        [tableView1 setDelegate:self];
        [tableView1 setDataSource:self];


        //     [self myviewDidload];

    }

    return self;
}

#pragma mark - Table view start
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;

}




-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell  = [tableView dequeueReusableCellWithIdentifier:@"tblCell"];



    //cell = myCellDeque;
    if(cell == nil){
        //        cell = myCellDeque;

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"tblCell"];

        UILabel *lb1 = [[UILabel alloc] initWithFrame:CGRectMake(25, 6, 154, 20)];
        lb1.tag = 1; // Set a constant for this
        lb1.font = [UIFont systemFontOfSize:9.0];
        [lb1 setTextColor:[UIColor whiteColor]];
        lb1.backgroundColor = [UIColor clearColor];

                cell.contentView.backgroundColor= [UIColor colorWithRed:7.0/255.0 green:91.0/255.0 blue:164.0/255.0 alpha:1]  ;

        [cell.contentView addSubview:lb1];


    }


    return  cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {






}



#pragma -mark tableDelete

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    //Return YES if you want the specified item to be editable.
    return YES;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {










}



@end

在所有三个控制器中使用类添加此tableview,然后您不必在所有3个控制器中为此tableview编写代码。希望它有所帮助

像这样在tableview中添加标签 enter image description here