该怎么做,而不是为我的iOS应用程序使用超过10个视图控制器

时间:2013-06-05 23:46:13

标签: ios uiviewcontroller

因此经过长时间的试验和错误后,我的应用程序中的用户现在可以从第一个和根Viewcontroller1中选择一行。当他这样做时,第二个Viewcontroller2打开并替换屏幕上的第一个。很棒,我到目前为止,我使用了NavigationController。

当用户选择一行时,我希望第二个Viewcontroller2显示有关选择的详细信息。例如,当你选择一头母牛时,你会看到一头牛的照片+一个解释。 当您选择匹配相同但具有其他图片和说明的马时。

为每个动物创建另一个viewcontroller似乎是不好的做法。 我该如何解决这个问题? 我听说过有关使用观点的内容吗?

我知道我必须添加一些数组,因为有多行,但我会自己解决这个问题。

感谢您阅读本文。

2 个答案:

答案 0 :(得分:1)

你是对的,为每只动物创建一个不同的视图是不好的做法。一般方法是建立一个包含动物和解释信息的模型。视图会根据用户选择的动物进行更新。该过程由控制器处理。这称为model-view-controller。这个想法是你有一个动物细节布局,但是通过控制器使用模型更新标签,根据选择的动物显示不同的图像和解释。

Apple解释navigating data using Table Views in the developer library。我建议你也看到SimpleDrillDown sample code

答案 1 :(得分:1)

你正处于理解的边缘

  

当用户选择一行时,我希望第二个Viewcontroller2显示有关选择的详细信息。

确定。好。您已确定需要第二个视图控制器,并且它应负责显示详细信息。

  

例如,当您选择一头母牛时,您会看到一头牛的照片+一个解释。当你选择一匹马 相同的设置但又有另一张图片和解释时

优异。您注意到每个人都有相同的设置。而且你也意识到在不同的视图控制器中反复重复这项工作是愚蠢的。

您需要分别保存动物的信息,并以类似的方式构建它们。这称为模型。例如。你可以创建一个具有name属性和图片属性的动物类。

@interface Animal : NSObject
@property (nonatomic, copy) NSString * name;
@property (nonatimic, strong) UIImage * picture;
@end

然后要显示任何动物,你只需要制作一个知道如何从模型中获取信息的视图控制器(类似结构的数据)并在视图中填写信息。

使用我们的示例,我们可能会在视图控制器中看到此代码

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    ...

    Animal * animalToDisplay = ... 
    self.imageView.image = animalToDisplay.picture;
    self.nameLabel.text = animalToDisplay.name;

控制器之前可以将animalToDisplay对象提供给第二个控制器,可能是在点击与动物相对应的单元格或按钮时。此视图Controller可以显示来自任何Animal对象的数据。