#ios #uikit #swift #uisegmentedcontrol
#iOS #uikit #swift #uisegmentedcontrol
Вопрос:
Я пытаюсь добавить a UISegmentedControl
в свое приложение, но, похоже, я всегда получаю [UISegmentedControl longValue]: unrecognised selector sent to instance 0x22f44e00
Вот как я объявляю свой UISegmentedControl
@IBOutlet var speedControl: UISegmentedControl
override func viewDidLoad() {
super.viewDidLoad();
self.speedControl.addTarget(self, action: "selectedSegmentDidChange:", forControlEvents: .ValueChanged);
self.speedControl.selectedSegmentIndex = 0;
}
func selectedSegmentDidChange(segmentedControl: UISegmentedControl) {
NSLog("method called");
}
Как мне это решить?
Комментарии:
1. Не спрашивайте о
longValue
UISegmentedControl. (Я знаю, вы не думаете , что делаете это, но если вы изучите оператор, который получает исключение, вы обнаружите, что объект, который, по вашему мнению, является NSString или NSNumber, на самом деле является UISegmentedControl .)2.
forControlEvents
Аргумент является битовой маской, поэтому я думаю, что вы не можете использовать этот сокращенный синтаксис? Работает ли это:self.speedControl.addTarget(self, action: "selectedSegmentDidChange:", forControlEvents: UIControlEvents.ValueChanged)
3. @Jiaaro То, что вы предлагаете, семантически эквивалентно тому, что он уже использует. UIControlEvents можно опустить, поскольку компилятор может правильно вывести его, просмотрев аргументы addTarget . То, что это битовая маска, на самом деле не входит в проблему.
4. Я думаю, что в игре есть какой-то код, который вы нам не показываете, поскольку ничто здесь не приведет к
longValue
вызову какого-либо объекта.5. @David Я согласен, что это должно быть одно и то же, но иногда компилятор не может понять это с помощью API objective-c. По крайней мере, мне пришлось хотя бы раз написать его длинный путь, чтобы исправить ошибку компиляции
Ответ №1:
Я заметил, что ни один из моих кодов, которые я написал, не вызывал ошибку, но это была сама раскадровка. Я щелкнул правой кнопкой мыши по UISegmentControl, я заметил, что были странные подключения к неизвестному источнику. Я удалил их, нажав «X», и теперь все в порядке
Комментарии:
1. Забавно, у меня была такая же проблема в моей раскадровке! хахаха Рад, что я пришел сюда … лол