'UIView'类型的值没有成员'present' - 如何调用'present'?

时间:2018-04-10 14:18:56

标签: swift uiview uiviewcontroller segue

我有一个嵌入我的tableview标题的uiview文件

(类TopHeader:UIView,UICollectionViewDelegate,UICollectionViewDataSource)

如果我使用present(_:animated:completion:)我得到:类型TopHeader的值没有成员'存在' (self.present(MyOtherViewController(doModes:[。photo]),动画:true,完成:nil))

如何从那里使用现有方法?我可以从这个uiview文件调用我的uiviewcontroller中的函数吗?

3 个答案:

答案 0 :(得分:0)

您无法致电present(_:animated:completion),因为它是UIViewController的方法,而不是UIView

您不应直接从视图中呈现视图控制器。如果您需要此行为,最好使用UIViewController而不是UIView,因为视图控制器无论如何都会在其中包含view

答案 1 :(得分:0)

  

我可以从这个uiview文件调用我的uiviewcontroller中的函数吗?

是的,如果视图位于视图控制器层次结构中,您可以递归获取next响应者,直到您到达拥有的视图控制器。

答案 2 :(得分:0)

present(_:animated:completion:)方法是UIViewController的方法,而非UIView。您需要找到将请求传递给视图控制器的方法。通常的模式是定义一个协议,让视图作为视图控制器显示另一个视图控制器。然后设置视图,使视图控制器成为符合该协议的委托。