选择器找不到实例方法

时间:2017-11-25 22:26:50

标签: ios swift uiswipegesturerecognizer

我正在尝试将方法注册为视图控制器中CultureInfo ci = new CultureInfo("en-US"); Console.WriteLine(ci.LCID); 的操作。目标视图是我使用UISwipeGestureRecognizer子类构建的自定义视图,因为我想要滑动目标。我遇到的问题是我不知道如何将操作设置为UIView中的方法。当我将手势拖放到界面构建器中的视图时,我可以执行此操作,然后将操作拖出到控制器。

UIViewController

我也尝试过使用

func swiped(_ sender: UISwipeGestureRecognizer) { } func addGestureToView(_ view: CardView) { let gesture = UISwipeGestureRecognizer(target: view, action: Selector("swiped:")) gesture.direction = .up view.addGestureRecognizer(gesture) }

这两种方法都给我以下例外:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [testapp.CardView swiped:]:无法识别的选择器发送到实例

我认为这是因为它在let gesture = UISwipeGestureRecognizer(target: view, action: #selector(swiped(_:)))目标中寻找swiped:,而不是在Controller中存在的方法。我如何指定我希望它将控制器用于操作,同时将手势本身应用于CardView

1 个答案:

答案 0 :(得分:1)

更改此行:

let gesture = UISwipeGestureRecognizer(target: view, action: Selector("swiped:"))

为:

let gesture = UISwipeGestureRecognizer(target: self, action: #selector(swiped(_:)))

<强>解释

UISwipeGestureRecognizer中的

target:定义了调用操作方法的位置,通过定义self我们告诉我们应该从UIViewcontroller而不是从CardView调用我们的滑动手势动作

UISwipeGestureRecognizer中的

操作定义了应在滑动手势上调用的方法。