【问题标题】:How to create common UITableView for all view controllers?如何为所有视图控制器创建通用 UITableView?
【发布时间】:2014-05-19 16:05:55
【问题描述】:

有没有人知道如何在多个ViewControllers 中使用单个UITableView

我需要为我的所有视图控制器创建一个通用的UITableView,并在整个应用程序中使用它。

感谢任何帮助。

【问题讨论】:

  • 有几种方法。您需要提供有关您的需求的更多详细信息,才能抵消一个好的建议。如果您使用迄今为止发现的一些想法更新您的问题,这也会有所帮助。
  • @maddy:我的应用程序中的要求是表视图在所有视图控制器中具有相同的结构。目前我已经分别在所有视图控制器中添加了表格视图。
  • 为什么不为每个视图控制器重用相同的视图控制器类?您可以制作一个可以显示不同数据集的通用视图控制器。

标签: ios uitableview


【解决方案1】:

使用ContainerView,你可以将ContainerView拖到storyboard中的ViewControllers中,根据需要调整大小。您在所有需要 TableView 的 ViewController 中使用 ContainerView

附件是我的一个应用程序的屏幕截图,该应用程序使用 ContainerView,其中包含 ViewController 内的 TableView。我在 2 个不同的 ViewControllers 中使用相同的东西。

【讨论】:

    【解决方案2】:

    你可以使用单例。这是一个例子:

    CommonTableView.h 文件:

    #import <Foundation/Foundation.h>
    
    @interface CommonTableView : UITableView <UITableViewDelegate>
    
    + (CommonTableView *)sharedInstance;
    
    @end
    

    CommonTableView.m 文件:

    #import “CommonTableView.h”
    
    CommonTableView *sharedInstance = nil;
    
    @implementation CommonTableView
    
    + (CommonTableView *)sharedInstance
    {    
        static dispatch_once_t pred;
    
        dispatch_once(&pred, ^{
            sharedInstance = [[super allocWithZone:nil] init];
        });
    
        return sharedInstance;
    }
    
    - (id)init
    {
        self = [super init];
        if (self) {
            self.delegate = self;
            //customize your table view
        }
    
        return self;
    }
    
    #pargma mark - UITableView delegate
    //…
    
    @end
    

    然后,您可以在所需的 UIViewControllers 中使用 [CommonTableView sharedInstance] 访问您的 tableView。

    【讨论】:

    • 您不能一次将单例表视图添加到多个视图控制器。如果您尝试将其添加到第二个控制器,它将从第一个控制器中删除。
    • 正常。但是你不需要把它放在一个以上的地方。如果您在 viewWillApear 中添加表格视图,则不会有问题。我不是单身人士的忠实粉丝,但这是解决这个问题的方法之一。
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多