Я пытаюсь изучить базовую iOS Swift3 и использовать метод раскадровки. Я работал над кодом в the tutorial on this website.Segue не имеет имени ViewController
Создав ссылки для раскадровки для FirstCustomSegue, я кодирую следующее: Я добавил комментарии для всех 6 ошибок:
class FirstCustomSegue: UIStoryboardSegue {
override func perform() {
// Value of type 'FirstCustomSegue' has no member 'sourceGameViewController'
var firstVCView = self.sourceGameViewController.view as UIView!
var secondVCView = self.destinationGameViewController.view as UIView!
// Cannot call value of non-function type 'UIScreen'
let screenWidth = UIScreen.mainScreen().bounds.size.width
let screenHeight = UIScreen.mainScreen().bounds.size.height
secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)
// Cannot call value of non-function type 'UIApplication'
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(secondVCView, aboveSubview: firstVCView)
// Value of type 'FirstCustomSegue' has no member 'sourceGameViewController' (This is in the (Finished) line, of course)
UIView.animateWithDuration(0.4, animations: {() -> Void in
firstVCView.frame = CGRectOffset(firstVCView.frame, 0.0, -screenHeight)
secondVCView.frame = CGRectOffset(secondVCView.frame, 0.0, -screenHeight)
}) { (Finished) -> Void inself.sourceGameViewController.presentGameViewController(self.destinationGameViewController as UIViewController,
animated: false,
completion: nil)
}
}
}
кажется мне, как будто есть недостающее соединение где-то, но я не могу найти его. Возможно, некоторые из них - это изменение в iOS10? Некоторые поиски предположили, что это может быть проблемой с битами UIScreen.mainScreen(), но я не могу найти ничего, что бы разрешило проблемы.
В учебнике вы следующее IOS 8, который является кодирование в Swift 2.x. Вы, с другой стороны, кодируете в Swift 3. всякий раз, когда вы видите это ** Невозможно вызвать значение нефункционного типа «UIScreen», это означает, что вещь, которую вы вызываете **, не является ** функцией, поэтому вам следует удалить '()'. если вы наберете 'UIScreen.', а затем начнете вводить m ... вы увидите, что он имеет только свойство main, а не как функцию. Такая же проблема для вашего 'UIApplicaton' должна быть' UIApplication.shared' ... правило большого пальца - это когда вы используете старые учебники, не копируете и не вставляете, а вводите их и смотрите, обновляется ли sytanx. – Honey
Кроме того, ошибка ** Значение типа «FirstCustomSegue» не имеет исходного элемента sourceGameViewController ** означает, что ваш FirstCustomSegue ** не имеет ** никакого * свойства * (также известного как член) с именем 'ViewController'. Возможно, вы назвали свою собственность чем-то еще и ее опечаткой или не обладаете таким свойством во ВСЕХ – Honey
Спасибо - это очень полезно. Теперь я знаю, как продвигаться вперед с этими вещами! Весьма признателен. – CAgrippa