ios - iOS 和 tvOS 应用程序上的相同 viewController,UIPickerViewDelegate 在 tvOS 上不可用

标签 ios swift tvos

我正在为 iOS 和 tvOS 目标使用 ViewController,对于 iOS,我使用 UIPickerView。

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

UIPickerViewDataSource 和 UIPickerViewDelegate 在 tvOS 上不可用,我只在 iOS 上使用它们,但是当我尝试为 tvOS 构建时出现错误UIPickerViewDelegate 不可用

有没有办法只为 iOS 应用程序包含 UIPickerViewDataSource 和 UIPickerViewDelegate 并在为 tvOS 构建时排除它们?

最佳答案

这是一种方法

class Test : UIViewController, UIPickerViewDelegate{

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

但是如果您需要委托(delegate)代码在类中,我建议创建一个没有 UIPickerViewDataSource 和 UIPickerViewDelegate 的父类(super class),并将其添加到子类中

 SuperFirstViewController
           |
           |
           /\
          /  \
         /    \
        /      \
      tvOS    iOS - FirstViewController

或在代码中

class Test : ViewController{
    //some code..
}
class iOSTest : Test, UIPickerViewDelegate{
    //some code..
}
class tvOSTest : Test{
    //some code..
}

关于ios - iOS 和 tvOS 应用程序上的相同 viewController,UIPickerViewDelegate 在 tvOS 上不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691332/

相关文章:

objective-c - 使用菜单按钮在 tvOS 上关闭 UIAlertController

iOS SpriteKit : resizing SKSpriteNode

ios - <错误> : CGContextSetFillColorWithColor: invalid context 0x0

ios - Facebook iOS SDK 4.2 出现编译错误

swift - 如何在不破坏 "Menu"按钮默认行为的情况下在 tvOS 游戏中设置主菜单

swift - 如何获取apple tv设置中设置的外观风格?

ios - 如何在iPhone上禁用水平滚动

ios - 如何从另一个 UIViewController 更改分段控件标题(设置)

ios - 在 native iOS 应用程序中集成响应式 html 网页并使用 Apache Cordova 进行通信

ios - 在应用程序启动时获取推送通知详细信息