我在视图控制器中意外拼错了其中一个插座并遇到了一些问题。当我手动尝试纠正错字时,我在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)"
}
}
答案 0 :(得分:21)
编辑:自Xcode9以来,重构函数;新的好方法是in this answer
从Xcode 6开始,您可以直接在查找导航器(Cmd+3
)中查找插座名称,它会在您的代码中显示实例,在xib和故事板中显示 。它也适用于行动。
只需在查找导航器中搜索名称。
您可以看到第二个结果是故事板中的引用。您可以通过单击每个结果逐个替换,然后按替换,或者如果您确定不要破坏任何内容,则可以直接全部替换。
答案 1 :(得分:15)
Xcode 9有许多编辑器改进,包括一个功能,可以在一个地方更改代码和故事板中的插座/操作名称。
在下面的示例Swift代码中,右键单击btnRequestCode
,从弹出菜单中选择“Refactor> Rename ...”,更改插座/操作名称和Xcode更改它也在故事板中。
@IBOutlet weak var btnRequestCode: UIButton!
答案 2 :(得分:7)
有了swift,这种重构还行不通。您必须更改插座的名称,然后在界面构建器中删除并重置连接。
<强>更新强>
右键单击要重命名的IBOutlet,删除参考插座,然后重新分配,但不必对代码执行任何操作。
答案 3 :(得分:0)
我喜欢通过打开Storyboard作为源代码并编辑类似XML的标签来解决这种情况。
右键单击.storyboard文件,然后选择“打开为”。搜索仍在故事板中设置但不再与View Controller中重命名的方法/插座对象匹配的旧插座(或操作/方法)名称。编辑故事板中的Xml标记,以在视图控制器中为其指定插座或操作的新名称。