ios - 重用我为非常相似但不相同的情况创建的 UIViewController 子类 : recommended?

标签 ios objective-c uiviewcontroller

我对 iOS 开发还比较陌生,想知道这样做是否是一种好的做法。

例如,假设我有两个不同的上下文,我想在其中以相同/相似的方式呈现相同/相似的数据,但存在一些差异,可能是从一个上下文到另一个上下文的一些不同按钮或我需要的不同东西准备数据。我应该只在同一个 View Controller 中创建多个配置方法并根据需要调用其中一个,还是有两个单独的 View Controller ?

我非常倾向于前者是正确的,因为它看起来更有效率并且节省了大量相同的代码,但我希望更有经验的程序员提供一些输入以防万一。

最佳答案

您应该创建三个 View Controller :SuperViewControllerFirstViewControllerSecondViewControllerFirstViewControllerSecondViewController 应该是您的 SuperViewController 的子类。那么你应该考虑以下几点:

变量和属性

SuperViewController 中声明 View Controller 之间的所有公共(public)变量。

在适当的 View Controller 中声明任何 View Controller 特定的变量和属性。

方法

与属性一样,在您的 SuperViewController 中定义任何共享方法及其实现。

如果您的方法在您的 View Controller 之间共享一些但不是全部代码,请执行以下操作:

1) 在你的 SuperViewController 中实现这个方法:

-(void)someSemiSharedMethod {
    // put the common code here
}

2) 在你的 View Controller 中:

-(void)someSemiSharedMethod {
    // call the superclass' implementation of this method
    // to ensure that common code is executed
    [super someSemiSharedMethod];

    // now add any child controller specific code to this method below
}

这种接缝就像是您想要实现的目标的最佳方法。如果您有其他问题或者此方法不能完全达到您的要求,请告诉我。

关于ios - 重用我为非常相似但不相同的情况创建的 UIViewController 子类 : recommended?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361475/

相关文章:

ios - NS无效参数异常 : [__NSArrayM insertObject:atIndex:]: object cannot be nil

android - 如何在 Flutter 中自动刷新 listView?

ios - 使用 Swift 将录音上传到 Firebase

ios - 如何检测 UIWebView 中的点击事件

ios - GKMatchmaker 自定义媒人 View Controller 已取消

objective-c - Mac 中的 CF 前缀

objective-c - 将 objectAtIndex 的返回值转换到 NSArray 上

ios - UILabel 子类使用自定义颜色初始化

ios - View Controller 之间有很多 Segues 可以吗?

ios - Swift - 优化使用非常长的数组