在Swift中重命名一个插座

Car*_*rds 18 xcode ios swift

我不小心拼错了我的视图控制器中的一个插座并遇到了一些问题.当我手动尝试纠正错字时,我会在运行时停止,AppDelegate我会显示消息,Thread 1: signal SIGABRT突出显示代码块的开头:

class AppDelegate: UIResponder, UIApplicationDelegate {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我发现要在Objective-C中解决这个问题,你可以右键单击插座的原始名称,Refactor => Rename但不幸的是我收到消息:"Xcode只能重构C和Objective-C代码".

查看控制器

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var billTextField: UITextField!

    @IBOutlet weak var tipRateSegmentedControl: UISegmentedControl!

    @IBOutlet weak var tiLabel: UILabel! // Variable name should be "tipLabel"

    @IBAction func calculateTapped(sender: AnyObject) {
        var userInput = billTextField.text as NSString
        var totalBill: Float = userInput.floatValue
        var index: Int = tipRateSegmentedControl.selectedSegmentIndex
        var tipRate: Float = 0.15

        if index == 0 {
            tipRate == 0.15
        } else if index == 1 {
            tipRate = 0.20
        } else {
            tipRate = 0.25
        }

        var tip: Float = totalBill * tipRate

        tipLabel.text = "$\(tip)"
    }
}
Run Code Online (Sandbox Code Playgroud)

Cra*_*ems 23

编辑:自Xcode9以来,有一个重构函数 ; 新的好方法是这个答案中的一个


从Xcode 6开始,您可以直接在Find navigator(Cmd+3)中查找插座名称,它会在您的代码以及xib和storyboard中显示出现的内容.它也适用于行动.

只需在"查找"导航器中搜索名称即可.

在此输入图像描述

您可以看到第二个结果是故事板中的引用.您可以通过单击每个结果逐个替换并按" 替换",或者如果您确定不破坏任何内容,则可以直接替换"全部".


Mob*_*Dan 17

Xcode 9

Xcode 9有许多编辑器改进,包括一个功能,可以从一个地方更改代码和故事板中的插座/操作名称.

在下面的示例Swift代码中,右键单击btnRequestCode,从弹出菜单中选择"Refactor> Rename ...",更改插座/操作名称,Xcode也在Storyboard中更改它.

@IBOutlet weak var btnRequestCode: UIButton!
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Dán*_*agy 7

有了swift,这种重构还不行.您必须更改插座的名称,然后在界面生成器中删除并重置连接.

更新: 在此输入图像描述

右键单击要重命名的IBOutlet,删除参考插座,然后重新分配,但不必对代码执行任何操作.