添加 ViewController.swift 并重命名后,它不会 link 我的 viewController 与那个 swift class

after adding a ViewController.swift and renaming it won't link my viewController with that swift class

我创建了新的 swift 文件 myviewController.swift,在 link 进入我的视图控制器之前,我将其重命名为 newController.swift。然而,它没有在身份检查器中显示为 link class 到我的视图控制器。

我尝试将它直接添加到项目文件夹,但它说 newController.swift 文件已经存在。

任何人都可以提出问题所在吗?

Interface Builder 中填充的 classes 列表基于 class 名称而不是文件名。单个文件可以包含多个 classes.

除了更改文件名之外,如果您希望 class 名称在 Interface Builder 和其他位置中不同,您还需要更改 class 名称。

如果在更改 class 名称后,它仍然没有出现在 Interface Builder 中,请尝试按 Cmd+B 构建您的项目,然后再次查看。


考虑以下文件:

ViewController.swift

import Foundation
import UIKit


class FooController: UIViewController {
    //stuff
}

class BarController: UIViewController {
    // stuff
}

尽管文件名为 ViewController.swift,但 ViewController 不会出现在我的视图控制器的下拉列表中。

相反,我使用默认的内置 UIKit 视图控制器,以及我在此文件中定义的两个控制器,FooControllerBarController:

您必须确保将代码连接到视图控制器 class。

只要您 select 正确的视图控制器,您的文件名并不重要。

您必须 select 您的视图控制器和它们 select,使用身份检查器,您使用下拉菜单 (NewViewController) 创建的自定义 class。

class NewViewController : UIViewController {
    // your code    
}

在 Swift 2.1、XCode 7 和 iOS9 中重命名文件需要 3 个步骤:

第 1 步:重命名文件本身 例如:从默认的 'ViewController.swift' 到 'MyViewController.swift'。确保您保留 'ViewController' 文本附加(在本例中为 'My'。这就是标准。

第 2 步: 在文件中,更改 Class 例如:从默认的'Class ViewController : UIViewController'到'Class MyViewController : UIViewController'

第 3 步: 在主情节提要中,click/select 在 scene/ViewController 上(确保有蓝色边框)。转到右侧菜单中的 Identity Inspector,在 'Custom Class' 部分下,'Class' 下拉菜单现在应该具有新名称 即 'MyViewController'。只是 select 它。

清理项目以便刷新。

如果您使用 MV 命令从终端重命名 VC,那么您仍然可以在 xcode [红色] 中的项目中看到旧文件引用。也只需从那里删除旧文件,否则在构建项目时会出现相同的错误。

在 Swift 3 使用 Xcode 8:

第 1 步: 在导航面板中打开项目导航器。单击要重命名的文件。

步骤 2: 在实用程序面板中打开文件检查器。更改文件名并按 return.

第 3 步:更改文件中 class 的名称。

第 4 步: 打开故事板并 select 相应的视图。

第 5 步: 在实用程序面板中打开身份检查器。更改 class 的名称。按 return.

附加步骤(如果仍然不起作用):退出Xcode并再次打开。这是我经常遇到的 Xcode 中的一个错误。

您需要转到您的项目根目录。该文件将在那里,您可以从那里删除不需要的文件。

  1. 在全局项目中搜索和删除
  2. 强制退出 Xcode
  3. 控制单击 -> 在 .xcodeproj/xcworkspace -> 显示包内容
  4. 删除 xcuserdata 目录
  5. 运行.xcodeproj/xcworkspace