Помощник редактора показывает другой файл "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 - пожалуйста, исправьте, если я ошибаюсь

Другие вопросы по тегам