【问题标题】:Xcode : Invalid redeclaration of 'ViewController'Xcode:'ViewController'的无效重新声明
【发布时间】:2018-04-01 05:48:54
【问题描述】:

我刚刚完成了我的应用程序,它运行良好,但突然按下文件 -> 复制后,我有一条消息说

“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)

    }

}

【问题讨论】:

  • 问题不在于ViewController 的实现,而在于您复制了文件,因此它现在找到了定义ViewController 的两个不同文件。您需要删除其中一个,或更改其中一个以定义一个名称不是ViewController 的类(例如SecondViewControllerDetailsViewController 或其他)。
  • 是的!我刚刚想通了。谢谢你帮助我!
  • 重新声明和重新编译都可能导致该问题。参考Invalid redeclaration of UITableViewDataSource method?Invalid redeclaration of ****

标签: ios swift xcode uiviewcontroller redeclaration


【解决方案1】:

此错误意味着您声明了另一个文件:

class ViewController...

您可能已更改文件名,例如更改为 ViewControllerTwo.swift,但请确保也更改类声明。

【讨论】:

  • 现在解决了。谢谢拉什万!
  • 我们需要从 ViewController 更改类名。
【解决方案2】:

您在点击复制后是否按了保存?该消息已经告诉您解决方案。您需要找到名称为 ViewController 的其他类。

两个步骤可能会有所帮助:

  1. 在 Xcode 的 Find Navigator(搜索)中搜索 ViewController
  2. 浏览您的项目文件夹并搜索重复的 .swift 文件。

【讨论】:

  • 嘿格伦!感谢您花时间帮助我。我在那里粘贴了整个代码。我很累找到它,但没有运气
  • 很高兴听到这个消息,J.BAT。你可以为你的(这个)问题/线程选择一个答案:)。
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
相关资源
最近更新 更多