Помощник редактора показывает другой файл "ViewController.swift", чем тот, который показывает главный редактор?
Исходный код, показанный в помощнике редактора для "ViewController.swift", отличается от исходного кода, показанного в главном редакторе для "ViewController.swift".
"ViewController.swift" в Main Editor
:
// ViewController.swift
// FoodTracker
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
// MARK: Properties
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var mealNameLabel: UILabel!
@IBOutlet weak var mainButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
nameTextField.delegate = self
}
// MARK: UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(textField: UITextField) {
mealNameLabel.text = textField.text
}
// MARK: Actions
@IBAction func setDefaultLabelText(sender: UIButton) {
mealNameLabel.text = "DEFAULT text"
// mainButton.tintColor = UIColor.darkTextColor()
}
}
"ViewController.swift" в Assistant Editor
:
//
// ViewController.swift
// FoodTracker
import UIKit
internal class ViewController : UIViewController, UITextFieldDelegate {
@IBOutlet weak internal var nameTextField: UITextField!
@IBOutlet weak internal var mealNameLabel: UILabel!
@IBOutlet weak var mainButton: UIButton!
override internal func viewDidLoad()
internal func textFieldShouldReturn(textField: UITextField) -> <<error type>>
internal func textFieldDidEndEditing(textField: UITextField) -> <<error type>>
@IBAction internal func setDefaultLabelText(sender: UIButton) -> <<error type>>
}
Итак, это совершенно разные файлы, но с одинаковым именем. Тот в Assistant Editor
интерфейс в то время как файл, показанный в Main Editor
это реализация интерфейса, верно?
Это кажется немного странным, но интерфейс и класс реализации имеют одно и то же имя? Когда я работаю в Xcode, я должен знать, что иногда два файла могут (часто?) Иметь одно и то же имя?
2 ответа
У меня такая же проблема. Я не мог понять, почему он показывает этот файл "внутреннего класса".
Мне удалось заставить его отображать правильный связанный файл. Для этого щелкните значок связанного редактора, два круга. Затем в появившемся окне нажмите "+". В появившемся новом окне должен быть правильный код. Затем закройте старое окно, и вы должны остаться с правым. Остальная часть проекта, похоже, исправлена.
Я нашел это в Xcode 9.2, Swift 4, но это может быть в других версиях.
В XCode, с ключом опции вниз, наведите указатель мыши на "func" или другое ключевое слово, описывающее область действия, чтобы показать область с синей скобкой.
Затем коснитесь трекпада двумя пальцами, чтобы автоматически открыть помощник редактора в той же точке кода. Я часто хожу куда-то еще в своем коде, но хочу, чтобы открытое окно оставалось там, где я только что был. Этот трюк делает именно это.
(Убедитесь, что ваш трекпад настроен так, чтобы "вторичный щелчок" был касанием двумя пальцами.)
(Swift 4.2) У меня просто была такая же проблема. Всякий раз, когда я работал в редакторе помощника, мой ViewController был помечен как внутренний, и я не мог вносить в него изменения. Вышеуказанные решения не сработали для меня, но они поставили меня на правильный путь. По-видимому, я находился в каком-то дубликате файла, а не в нужном мне ViewController. Чтобы исправить проблему, нужно просто перейти к нужному файлу с помощью элементов управления в верхней части помощника редактора.
Я видел, что могло бы быть решением на видео youtube.com/watch?v=wPAUKhlmW1M на временной позиции 1:31 - пожалуйста, исправьте, если я ошибаюсь