CandidatesTableViewController

CandidatesTableViewController

我有一个通用类:

class PaginatedTableViewController
  <GenericElement, Source: PaginationDataSource
     where Source.PaginatedGenericElement == GenericElement>:
  UITableViewController


我尝试从情节提要中实例化的另一个:

class CandidatesTableViewController:
   PaginatedTableViewController<Match, MatchPaginationDataSource>


我在情节提要的“自定义类”下拉菜单中找不到CandidatesTableViewController。如果我强制使用它,然后将我的控制器转换为代码,则应用程序会在运行时崩溃,抱怨我的控制器(应该是CandidatesTableViewController实例)实际上是一个UITableViewController实例。


  中的未知类_TtC21MyProjectName29CandidatesTableViewController
  接口生成器文件。
  无法转换类型的值
  'UITableViewController'(0x1040917f8)至
  'MyProjectName.CandidatesTableViewController'(0x1013a9890)。


在我的项目中,此控制器嵌入到另一个控制器中,这就是我进行强制转换的原因:

tableViewController = (segue.destinationViewController as! CandidatesTableViewController)


有谁知道如何解决这个问题?

最佳答案

不幸的是,通用Swift类对于Objective-C代码不可见,并且在Interface Builder中(在情节提要和Xibs中)也不受支持。我发现这两点密切相关。

作为解决方案,我建议您使用聚合:不要使您的视图控制器具有通用性,而是将一些逻辑提取到另一个(泛型)类中并在视图控制器中使用它。

09-10 05:57