Xcode: недопустимое повторное объявление «ViewController»

Я только что закончил свое приложение, и оно работало нормально, но внезапно после нажатия «Файл» -> «Дублировать» у меня появилось сообщение о том, что

Недопустимое повторное объявление ViewController.

Пожалуйста, помогите мне, если вы можете, ребята? Спасибо

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var slideScrollView: UIScrollView!

    @IBOutlet var pageControl: UIPageControl!

    override func viewDidLoad() {

        slideScrollView.delegate = self
        let slides:[Slide] = createSlides()
        setupSlideScrollView(slides: slides)
        pageControl.numberOfPages = slides.count
        pageControl.currentPage = 0
        view.bringSubview(toFront: pageControl)
    }

    func createSlides () -> [Slide] {
        let slide1: Slide = Bundle.main.loadNibNamed("Slide", owner:self, options:nil)?.first as!Slide

        slide1.label.text = "Slide1"

        let slide2: Slide = Bundle.main.loadNibNamed("Slide", owner:self, options:nil)?.first as!Slide

        slide2.label.text = "Slide2"
        return [slide1, slide2]
    }

    func setupSlideScrollView (slides:[Slide]) {

        slideScrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
        slideScrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height)
        slideScrollView.isPagingEnabled = true


        for i in 0 ..< slides.count {

            slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
            slideScrollView.addSubview(slides[i])
        }
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
        pageControl.currentPage = Int(pageIndex)

    }

}

person J.BAT    schedule 20.10.2017    source источник
comment
Проблема не в реализации ViewController, а в том, что вы продублировали файл, поэтому теперь он находит два разных файла, которые определяют ViewController. Вам нужно либо удалить один из них, либо изменить один из них, чтобы определить класс с именем, отличным от ViewController (например, SecondViewController или DetailsViewController или любым другим).   -  person Rob    schedule 20.10.2017
comment
Да! Я только что понял это. Спасибо за помощь мне!   -  person J.BAT    schedule 20.10.2017
comment
Проблема может возникнуть как при повторном объявлении, так и при повторной компиляции. См. Недопустимое повторное объявление метода UITableViewDataSource? и Недопустимое повторное объявление ****   -  person LF00    schedule 03.05.2018


Ответы (2)


Эта ошибка означает, что у вас есть другой файл, объявленный с помощью:

class ViewController...

Возможно, вы изменили имя файла, например, на ViewControllerTwo.swift, но не забудьте также изменить объявление класса.

person Rashwan L    schedule 20.10.2017
comment
Разобрался сейчас. Спасибо Рашван! - person J.BAT; 20.10.2017
comment
нам нужно изменить имя класса с ViewController. - person R. Mohan; 05.04.2018

Нажали ли вы сохранить после того, как нажали кнопку дублировать? Сообщение уже предлагает вам решение. Вам нужно найти другой класс, который у вас есть, с именем ViewController.

Два шага могут помочь:

  1. Найдите ViewController в Навигаторе поиска вашего Xcode (поиск)
  2. Просмотрите папку проекта и найдите дублированный файл .swift.
person Glenn Posadas    schedule 20.10.2017
comment
Эй, Гленн! Спасибо, что нашли время, чтобы помочь мне. Я вставил туда весь код. Я устал искать его, но не повезло - person J.BAT; 20.10.2017
comment
Рад это слышать, J.BAT. Вы можете выбрать ответ на свой (этот) вопрос/тред :). - person Glenn Posadas; 22.10.2017