Ios 多个UIViewController中的一个UITableViewController

Ios 多个UIViewController中的一个UITableViewController,ios,objective-c,uitableview,uiviewcontroller,Ios,Objective C,Uitableview,Uiviewcontroller,是否可以将一个UITableViewController用于多个UIViewController。如果是,如何可能,请提前感谢 我有3个屏幕视图控制器,它们的布局与UITablewView相同。那么,我可以为所有这些屏幕创建一个UITableViewController吗?我可以在所有的ScreenSuiViewController中使用它吗。如果是,请告诉我一些想法,无需使用自定义单元格。如果您不想两次实现相同的委托和数据源方法,请在一个控制器中执行,并从中对其他控制器进行子类化。您似乎不完全

是否可以将一个UITableViewController用于多个UIViewController。如果是,如何可能,请提前感谢


我有3个屏幕视图控制器,它们的布局与UITablewView相同。那么,我可以为所有这些屏幕创建一个UITableViewController吗?我可以在所有的ScreenSuiViewController中使用它吗。如果是,请告诉我一些想法,无需使用自定义单元格。如果您不想两次实现相同的委托和数据源方法,请在一个控制器中执行,并从中对其他控制器进行子类化。

您似乎不完全理解UITableViewController实际上是什么;它实际上是UIViewController的一个子类

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


鉴于tableView需要一个集合委托和数据源,我认为将同一个tableView与多个ViewController重用可能有点复杂。除非您愿意将此工作分配给单独的类或热交换显示。

是的,这是可能的,但您必须在所有3个视图控制器中添加uiitableview

这里有一些例子。。! 将该tableview的标记设置为21

在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,那么您就不必在所有三个控制器中为此tableview编写代码。希望能有帮助

向tableview添加标记,如下所示

根据要显示的数据,您可以将同一UITableViewController与不同的数据源一起使用。如果要使用不同的单元格,您也可以在cellForRowAtIndexPath中执行此操作:viewWithTag方法在哪里,我应该如何处理viewWithTag方法注意:此LCsampleTableView类应该是uiview的子类,然后您将获得其方法viewWithTag我在选择一行后出现了一种情况,我需要导航到tableview中选择的另一个ViewController您可以执行的委托方法。作为参考,您可以查看此,