我为iOS和tvOS目标使用ViewController,为iOS使用UIPickerView。

class FirstViewController: UIViewController,
    UITableViewDataSource, UITableViewDelegate,
    UITextFieldDelegate,UIWebViewDelegate,
    UIPickerViewDataSource, UIPickerViewDelegate

UIPickerViewDataSource和UIPickerViewDelegate在tvOS上不可用,我只在iOS上使用它们,但我得到错误消息UIPickerViewDelegate在尝试为tvOS生成时不可用。
有没有办法只为iOS应用程序包含UIPickerViewDataSource和UIPickerViewDelegate,并在为tvOS构建时排除它们?

最佳答案

这是一种方法

class Test : UIViewController, UIPickerViewDelegate{

}
#if os(iOS)
extension Test : UIPickerViewDelegate{
    //delegate code goes here!
}
#endif

但是如果您需要委托代码在类中,我建议您创建一个没有UIPickerViewDataSource和UIPickerViewDelegate的超级类,并将其添加到子类中
 SuperFirstViewController
           |
           |
           /\
          /  \
         /    \
        /      \
      tvOS    iOS - FirstViewController

或在代码中
class Test : ViewController{
    //some code..
}
class iOSTest : Test, UIPickerViewDelegate{
    //some code..
}
class tvOSTest : Test{
    //some code..
}

10-08 06:29