代码之家  ›  专栏  ›  技术社区  ›  Display Name

单个情节提要上的所有视图控制器

  •  0
  • Display Name  · 技术社区  · 6 年前

    回到XCode 5和6次,不建议将所有视图控制器放在一个情节提要上,我的经验证明了这一点:XCode变得很慢。

    今天的情况如何?XCode 9可以处理这个问题吗?苹果是否正式建议将所有内容都放在一个单一的情节提要中?

    4 回复  |  直到 6 年前
        1
  •  1
  •   Rico Crescenzio    6 年前

    在我看来,最好将应用程序划分为模块或类似“流”的东西;例如,我通常创建 入职培训 包含登录/注册内容的情节提要,或 设置 包含设置菜单和子菜单(均为视图控制器)的情节提要。 此外,我从不创造 UITableViewCell UICollectionViewCell 直接在情节提要中,但我创建了一个 .xib公司 文件 我使用相同的@Prashant Tukadiya方法来处理视图控制器实例化和情节提要处理(以更通用的方式)。

    今天的情况如何?XCode 9可以处理这个问题吗?

    1-2年前,我在一个项目中工作,该项目在一个故事板中包含所有视图控制器,最近我在XCode 9中打开了它,但速度仍然非常慢。

        2
  •  1
  •   Shehata Gamal    6 年前

    正如您所愿,当主情节提要中的视图控制器数量增加时,有时您必须这样做,当您的应用程序变大且情节提要打开/保存缓慢时,也必须划分应用程序功能

        3
  •  1
  •   Prashant Tukadiya    6 年前

    您应该按模块划分故事板。否则,您的项目将在情节提要的一次更改中花费大量时间。

    我的建议是 您可以使用情节提要引用通过segue连接请参见示例

    https://www.raywenderlich.com/115697/ios-9-storyboards-tutorial-whats-new-in-storyboards

    如果您不想使用segue,一个更好的解决方案是在每个viewcontroller中进行抽象方法练习,以便从情节提要访问

    就像

    //--------------------------------------------------------------------------------
    
    // MARK: - Abstract Methods
    
    //--------------------------------------------------------------------------------
    
    public class func viewController () -> LoginVC {
        return StoryBoard.main.instantiateViewController(withIdentifier: StoryBoard.controller.LoginVC) as! LoginVC
    }
    
    
    //--------------------------------------------------------------------------------
    // Now access it with  LoginVC.viewController() and do push or present whatever your operation you requred
    

    我在固定文件中管理所有内容

    public struct StoryBoard {
    
    static let main = UIStoryboard.init(name: "Main", bundle: nil)
    
           struct controller {
               static let LoginVC   =   "LoginView"
    
             }
    
    }
    
        4
  •  1
  •   AnnGoro    6 年前

    我为划分的逻辑单元创建不同的情节提要,并将引用传递给它们(XCode中的情节提要引用)。这有助于使他们更有条理。GitHub上还有一个很好的库,名为R.swift(参见 https://github.com/mac-cain13/R.swift )例如Android中包含资源的文件。它解析所有资源,如图像、笔尖、故事板等,并减少按名称调用资源时出错的可能性。