0

我正在设计一个底部带有标签栏的应用程序,代表我的应用程序关注的 2 组不同的数据。这些集合都是相同的数据类型但不同的集合(一个是分配的实体,另一个是附近的实体,但“实体”对于两者来说是相同的类型)。在每个视图控制器中,顶部还有一个用于相同数据的不同视图的切换开关(一个用于缩略图样式视图,另一个用于地图视图)。

根据我的理解,您不会使用 2 按钮选项卡栏控制器和跨两个选项卡的同一视图控制器的 1 个共享实例,我目前将代码拆分为 2 个单独的视图控制器,一个用于“分配的实体”,一个用于对于“附近的实体”。问题是这里的代码在每个视图控制器中都是完全相同的。唯一不同的是实体的特定集合。理想情况下,我想做的是有 1 个带有 2 个数组的视图控制器,每组数据 1 个,并且用于填充视图的数据会根据用户所在的选项卡而变化。有人对正确执行此操作有任何建议吗?这当然不可能是一个独特的问题,但我没有在网上找到任何东西来准确解决这个问题。通常我会认为有'

谢谢。

4

3 回答 3

2

只需拥有一个知道如何处理“实体”的视图控制器类。创建同一类的两个实例,每个选项卡一个。为每个视图控制器分配适当的实体集。

于 2012-10-23T21:06:41.240 回答
0

将共享代码导出到第三个帮助程序类中,并将其代码用作两个视图控制器中的组件。根据其中方法的用途命名此类。如果方法不使用任何实例变量,您可以将它们全部设为静态,这样您将拥有易于使用的函数集。

于 2012-10-23T21:11:34.440 回答
0

您可以创建单个视图控制器类,但创建一个自定义 init 方法,该方法允许您在单击选项卡时指定您使用的实体类型。然后,您可以使用实体类型作为您的方法的标志,以确定它们是否应该将其视为类型 a 或 b。

也许你可以做类似的事情:

EntityViewController *eVC = [[EntityViewController alloc]initWithNibName:@"EntityViewController" bundle:nil entityType:@"entityTypeA"];
[self.navigationController pushViewController:eVC animated:YES];

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil entityType:(NSString *)eType
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization for entities
        // Assign your value passed in init to your ivar here -- viewDidLoad hasn't run yet.
        _currentEntityType = eType;
    }
    return self;
}
于 2012-10-24T12:56:28.653 回答