Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当从另一个类中的选择器调用函数时,属性为Nil_Ios_Swift_Uiview_Selector - Fatal编程技术网

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)
.My
UIVew
子类在
gameBoardViewController
的viewDidLoad中初始化(我的主视图控制器)
func initGestureRecognizers() {

    let panRec = UIPanGestureRecognizer(target: gameBoard, action: #selector(GameBoardViewController.labelDragged(_:)))
    self.addGestureRecognizer(panRec)
    self.clipsToBounds = true
    self.userInteractionEnabled = true
}