Ios 使用选项卡栏,其中每个选项卡可以有与其关联的不同视图

Ios 使用选项卡栏,其中每个选项卡可以有与其关联的不同视图,ios,Ios,我有一个数组,其中包含两种类型的项(称为a型和b型),它们将显示在表视图中 可以对表格视图进行过滤,以便仅显示a类型的项目,或仅显示b类型的项目,或显示所有项目,并且用户可以通过点击3个相应选项卡中的一个来控制应用哪种过滤 因此,这表明我的应用程序的根控制器应该是一个选项卡栏控制器 如果这是唯一的要求,那么我会让选项卡栏控制器有3个表视图控制器,但是还有另一个要求,我不知道如何以干净的方式设计它: 如果任何筛选器都没有要显示的项目,则应显示一个图像和一些文本(图像和文本因选择的筛选器而异),而不

我有一个数组,其中包含两种类型的项(称为a型和b型),它们将显示在表视图中

可以对表格视图进行过滤,以便仅显示a类型的项目,或仅显示b类型的项目,或显示所有项目,并且用户可以通过点击3个相应选项卡中的一个来控制应用哪种过滤

因此,这表明我的应用程序的根控制器应该是一个选项卡栏控制器

如果这是唯一的要求,那么我会让选项卡栏控制器有3个表视图控制器,但是还有另一个要求,我不知道如何以干净的方式设计它:

如果任何筛选器都没有要显示的项目,则应显示一个图像和一些文本(图像和文本因选择的筛选器而异),而不是空表视图。因此,这可能是通过为表格视图设置背景图像来实现的,但是如果应用了过滤器a,那么除了图像/文本外,还应该显示一个按钮-我假设不能将其设置为表格视图的背景。因此,这意味着我需要一组单独的视图控制器来处理图像/文本/按钮视图的显示

我想我可以让选项卡栏控制器动态地将这些视图控制器与表视图控制器交换,这取决于每个过滤器是否有要显示的项,但这看起来很混乱

因此,我想也许选项卡栏控制器应该拥有3个导航控制器,每个导航控制器都有一个控制器作为其根视图控制器,如果没有项目,则显示图像/文本/按钮,否则它会将表视图控制器推到其堆栈上(如果项目数降至0,则将其弹出)

这是一个有效的选择吗?我所描述的行为是否有规范模式


TIA

我觉得这并不像你想使用
UITabBarController
那样。考虑将<代码> uISeMeNeTimeDebug <代码>在主代码<代码> > uiVIEW/COD>顶部放置3个段,并在其下方放置<代码> UITababVIEW < /代码>。 那你就可以了

[segmentedControl addTarget:self
                     action:@selector(selectionChanged:)
           forControlEvents:UIControlEventValueChanged];
并对方法中的
表视图
数据源和/或背景图像执行所需的更改

-(void)selectionChanged:(id)sender;

这种方法允许您将所有逻辑放在一个
UIViewController

中,这实际上相当简单。使用
UITabBarController
作为主界面。每个选项卡的视图控制器都是带有
UITableView
UIViewController
的子类。每个表视图控制器将加载适用于its选项卡的数据。如果每个选项卡的行为相同(过滤器除外),那么这将非常有效,因为您的逻辑将在一个控制器实现中。如果每个选项卡需要不同的行为,没什么大不了的,根据需要定制。

谢谢-如果产品营销部门希望它看起来像一个选项卡栏,那么定制分段控件以模仿选项卡栏的外观是否可能/容易?@Mungbeans不,这不是一个好主意。如果必须使用选项卡栏,则需要3个不同的视图控制器。但是,您仍然可以在
UITableViewController
的子类上编写,并创建3个实例,而不是编写3个单独的子类。这将大大减少冗余。谢谢,我看到您将其编辑为从UITableViewController更改为UIViewController,所以您可能认为这是比使用UITableView更好的方法?我是否可以使用UITableViewController创建一个UIView作为容器视图,然后将其他子视图(ImageView、UIButton、table view)放在其中?与创建UIViewController的子类相比,这有哪些缺点/优点?您的问题正是我更改它的原因。如果您不希望
tableView
成为控制器的容器视图,我将从
UIViewController
开始。除此之外,使用
UITableViewController
启动的主要原因是它预先配置了
tableView
,并设置了
dataSource/delegate
。否则就没有优势。我通常使用
UIViewController
并添加我自己的
tableView
,因为它更易于自定义。