【问题标题】:Subclass object not showing parent class variable in swift子类对象没有在swift中显示父类变量
【发布时间】:2017-09-17 21:59:53
【问题描述】:

我正面临这个奇怪的问题,不知道为什么。 我有一个类View,它有一个协议的委托变量:

class View: UIView {
    weak var delegate : SampleProtocol?
}

protocol SampleProtocol: Class { }

现在这个View 类是另一个类的父类:

class AnotherView : View

当我在 Objective-C 类中创建 AnotherViewIBOutlet 时,它无法访问 delegate 变量并且在 swift.h 文件中也不可见。

有人可以解释我在这里做错了什么吗?

【问题讨论】:

  • 尝试使用@objc,同时让你的协议子类来自NSObject protocol SampleProtocol: NSObject { }
  • class 应为小写
  • 另外sampleProtocol 应在delegate 声明中大写

标签: ios objective-c swift swift-protocols


【解决方案1】:

你需要定义你的协议,Objective-C 可读,添加@objc,正如我在 cmets 中所说的

@objc protocol SampleProtocol: class { }

之后,您必须在 .m

中添加这一行
#import "YourProjectName-Swift.h"

完整代码

import UIKit

@objc protocol SampleProtocol: class { }

class View: UIView {
    weak var delegate : SampleProtocol?
}

class AnotherView : View{

}

传承部分无副作用,已测试

现在您可以毫无问题地访问您的 View 类的委托属性,如图所示

【讨论】:

    猜你喜欢
    • 2022-12-19
    • 2012-08-21
    • 2016-06-23
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多