小编Abb*_*eet的帖子

在lowerCamelCase中命名变量时的奇怪行为

在编写Master-Detail应用程序时,我在Swift中遇到了一个奇怪的行为.

这是场景:
这是一个简单的任务管理器应用程序.我有两个文本控件(TASKNAME,TaskDescription在TaskDetailView),并具有相同的名称,但在lowerCamelCase(两个字符串变量TASKNAME,taskDescription)在TaskDetailViewController声明.

@IBOutlet var TaskName:UITextField!         //UpperCamelCase
@IBOutlet var TaskDescription:UITextView!   //UpperCamelCase
var taskName:String?                        //lowerCamelCase
var taskDescription:String?                 //lowerCamelCase
Run Code Online (Sandbox Code Playgroud)

我像往常一样在ViewDidLoad()上设置Text控件的值:

override func viewDidLoad() {
    super.viewDidLoad()
    TaskName.text = taskName
    TaskDescription.text = taskDescription
}
Run Code Online (Sandbox Code Playgroud)

我像往常一样在prepareForSegue(来自TaskListViewController)中传递数据:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if(segue.identifier == "TaskListSegue"){
        let detailViewController = segue.destinationViewController as ToDoTaskViewController
        let (task, desc) = m_ToDoListManager.GetTask(TaskListView.indexPathForSelectedRow().row)
        println("selected \(task) \(desc)")
        detailViewController.taskName = task
        detailViewController.taskDescription = desc
    }
}
Run Code Online (Sandbox Code Playgroud)

一切实施的方式都是正确的.但是现在当您运行应用程序时,未设置文本控件的值.实际上,也没有设置变量的值.

这里一定要发生什么?
我已经调查了这个问题,并提出了一个解决方案(请参阅下面的答案).另请参阅Martin R的答案以获得详细说明.我只是想与大家分享这个.我不确定是否有人遇到过这个问题.

更新:
这是实际的代码:https: …

ios swift

3
推荐指数
1
解决办法
179
查看次数

标签 统计

ios ×1

swift ×1