Ios 当从另一个类中的选择器调用函数时,属性为Nil
我有一个子类Ios 当从另一个类中的选择器调用函数时,属性为Nil,ios,swift,uiview,selector,Ios,Swift,Uiview,Selector,我有一个子类UIView,在这个自定义视图中,我在初始化期间添加了一个手势识别器 let gameBoard = GameBoardViewController() 及 在gameBoardViewController的viewDidLoad中,我初始化randomNumber=10 我遇到的问题是,在labelDragged函数中(拖动时我从UIView子类中的选择器调用该函数),randomNumber为零 当我从gameBoardViewController添加手势识别器时,我没有这个问
UIView
,在这个自定义视图中,我在初始化期间添加了一个手势识别器
let gameBoard = GameBoardViewController()
及
在gameBoardViewController
的viewDidLoad
中,我初始化randomNumber=10
我遇到的问题是,在labelDragged
函数中(拖动时我从UIView
子类中的选择器调用该函数),randomNumber
为零
当我从gameBoardViewController
添加手势识别器时,我没有这个问题
谁能告诉我我做错了什么?谢谢您的LabelDraged功能看起来如何?需要手势识别器吗。像LabelDraged(发送方:UIgestureRecognitor)?另外,请稍后在视图完全加载时尝试初始化手势识别器。在viewDidLoad或lazy中在ViewWillApper中加载它。是的,LabelDraged使用手势识别器,
func LabelDraged(手势:UIPangestureRecognitor)
。我的自定义UIView
子类也是在gameBoardViewController
的viewDidLoad
期间创建的,但是您是在viewDidLoad还是init方法中添加您的手势识别器?我也遇到过同样的问题,我记得self.addGestureRecognitizer只在initWithFrame中工作,否则您可以使用从所有初始值设定项调用的en commonInit方法,或者只需在ViewDidLoad中添加GestureRecognitizer。我的GestureRecognitizer在我的UIView
子类中,我在override init中初始化并添加它(frame:CGRect)
.MyUIVew
子类在gameBoardViewController
的viewDidLoad中初始化(我的主视图控制器)
func initGestureRecognizers() {
let panRec = UIPanGestureRecognizer(target: gameBoard, action: #selector(GameBoardViewController.labelDragged(_:)))
self.addGestureRecognizer(panRec)
self.clipsToBounds = true
self.userInteractionEnabled = true
}