在Swift中重命名一个插座

时间:2015-01-26 13:17:38

标签: ios xcode swift

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

class AppDelegate: UIResponder, UIApplicationDelegate {
  ...
}

我发现要在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)"
    }
}

4 个答案:

答案 0 :(得分:21)

编辑:自Xcode9以来,重构函数;新的好方法是in this answer


从Xcode 6开始,您可以直接在查找导航器(Cmd+3)中查找插座名称,它会在您的代码中显示实例,在xib和故事板中显示 。它也适用于行动。

只需在查找导航器中搜索名称。

enter image description here

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

答案 1 :(得分:15)

Xcode 9

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

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

@IBOutlet weak var btnRequestCode: UIButton!

enter image description here

答案 2 :(得分:7)

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

<强>更新 enter image description here

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

答案 3 :(得分:0)

我喜欢通过打开Storyboard作为源代码并编辑类似XML的标签来解决这种情况。

右键单击.storyboard文件,然后选择“打开为”。搜索仍在故事板中设置但不再与View Controller中重命名的方法/插座对象匹配的旧插座(或操作/方法)名称。编辑故事板中的Xml标记,以在视图控制器中为其指定插座或操作的新名称。