2015-03-28 1 views
0

Я пытаюсь вручную создать некоторый текст-заполнитель для UITextView, и когда я пытаюсь установить текст заполнителя, я получаю ошибку компилятора Swift. Xcode сообщает мне, что он ожидал объявления для pinContent, где я сначала пытаюсь установить его текстовое значение. Вот мой код:Ошибка Swift компилятора при ссылке на существующую переменную

class FirstViewController: UIViewController { 

@IBOutlet var pinTitle: UITextField! 

@IBOutlet var pinContent: UITextView! 

@IBAction func createPin(sender: AnyObject) { 



} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    println(userLocation) 
} 

// Manually create a placeholder for the text view 
pinContent.text = "Description" // This line is where I get my error 
pinContent.textColor = UIColor.lightGrayColor() 

// Change the text properties of the text view when the user begins editing, so it types in the normal black font 
func textViewDidBeginEditing(textView: UITextView) { 
    if textView.textColor == UIColor.lightGrayColor() { 
     textView.text = nil 
     textView.textColor = UIColor.blackColor() 
    } 
} 

// If the user leaves the text view blank when they're done editing, re-set the placeholder 
func textViewDidEndEditing(textView: UITextView) { 
    if textView.text.isEmpty { 
     textView.text = "Description" // Sometimes I get the same error here as well 
     textView.textColor = UIColor.lightGrayColor() 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+0

Move, что код в метод (например, в viewDidLoad) ... –

ответ

0

Проблема заключается в том, что вы хотите установить текст вне сферы действия метода или закрытия.
Попробуйте это:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view, typically from a nib. 
    // Manually create a placeholder for the text view 

    pinContent.text = "Description" // This line is where I get my error 
    pinContent.textColor = UIColor.lightGrayColor() 
    println(userLocation) 
} 
+0

Hi Herby и Мартин, спасибо за ваши быстрые ответы. Я переместил код в viewDidLoad(), и теперь, когда я запускаю приложение, он сразу же сбой. Вот что я получаю в консоли: *** Завершение приложения из-за неотображенного исключения «NSUnknownKeyException», причина: «[ setValue: forUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодировкой для ключа createPin «. Любые мысли по этому поводу? –

+0

Похоже, у вас есть устаревшее определение iboutlet в вашем раскадровке. Проверьте, правильно ли они подключены. – herby

+0

Вы были правы, у меня была плохая связь на моей основной.странице, которой не было в моем основном контроллере. Я вошел и удалил все подключения и снова добавил их, и это сработало. –

Смежные вопросы