ios - 如果 IBOutlet 在 UIViewController 类中,如何访问 UITableViewController 类中的 IBOutlet
问题描述
class AClass: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate {
@IBOutlet var mapKitView: MKMapView!
}
class BClass: UITableViewController {
var localAClass=AClass()
localAClass.mapKitView.mapType=MKMapType.standard
}
致命错误:在展开可选值时意外发现 nil
解决方案
在 ClassB 中,您需要使用UIStoryboard instantiateViewController(withIdentifier:)
IBOutlets 实例化。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController =
storyboard.instantiateViewController("AClassIdentifier") as!
AClass
然后,直到该类的 viewDidLoad() 才实例化 IBOutlets 视图。您ClassA
将需要第二个属性,例如mapType
, 并ClassB
设置该属性而不是直接在视图上。然后,ClassA viewDidLoad
您可以根据此存储的属性设置实际的 mapView。
推荐阅读
- html - 尝试动态生成 id 和 data-bs-target 但不起作用
- r - ggplot来自不同数据集的相同变量
- qt - 如何让 Qt 浏览器(Web 工具包)翻译“选择文件”
- vue.js - 如何在 VUE 中为这样的谷歌地图创建开关集群标记
- python - redis.exceptions.ConnectionError: 连接到 redis:6379 时出现错误 -2。名称或服务未知
- asp.net - ASP.NET 中 licences.licx 文件的用途是什么?什么时候编辑的?
- logstash - Logstash 日期过滤器不解析时间
- javascript - React 路由上的条件渲染
- java - java - 如何在java中使用Arraylist迭代过去30天的所有日子
- typescript - 使用 TypeGraphQL 和 TypeORM 时出现 GraphQL 'CannotDetermineGraphQLTypeError:无法确定 GraphQL 输出类型'错误