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

4
我有一个UIView文件,我将其嵌入到我的TableView header中。
(类TopHeader:UIView,UICollectionViewDelegate,UICollectionViewDataSource)
如果我使用present(_:animated:completion:),会出现以下错误:Value of type TopHeader has no member 'present' (self.present(MyOtherViewController(doModes: [.photo]), animated: true, completion: nil))
如何从这里使用present方法?我可以从此UIView文件中调用我的UIViewController中的函数吗?

1
一个 UIView 和一个 UIViewController 不是同一个东西。 - Leo Dabus
self.parentContainerViewController()?.present(alert, animated: true, completion: nil)自身.parentContainerViewController()?.present(alert,animated:true,completion:nil) - S.S.D
3个回答

2
您不能调用present(_:animated:completion),因为它是UIViewController的方法,而不是UIView的方法。
您不应该直接从视图中呈现视图控制器。如果需要此行为,则最好使用UIViewController而不是UIView,因为视图控制器将在其中包含一个view

5
那么,我该如何连接我的按钮(在UI视图XIB中)呢? - Tel4tel

0
我可以从这个uiview文件中调用我的uiviewcontroller中的函数吗?
是的,如果视图在视图控制器层次结构中,您可以递归地获取下一个响应者,直到达到拥有视图控制器。

1
我如何正确地委派?我正在使用单独的XIB文件用于TableView的标题。 - Tel4tel

0

present(_:animated:completion:) 方法是 UIViewController 的方法,而不是 UIView 的方法。你需要想出一种方法将请求传递给你的视图控制器。通常的模式是定义一个协议,让视图作为视图控制器来显示另一个视图控制器。然后设置你的视图,使其具有视图控制器作为符合该协议的委托。


3
我找不到关于这个的代码片段。没有协议的情况下,我能不能做到这一点呢? - Tel4tel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接