2015-03-11 1 views
0

У меня есть два контроллера вида, что для добавления моих «подпрограмм». Один из них - отобразить список всех подпрограмм и один для редактирования/создания подпрограмм.Как вы вставляете содержимое в пользовательский статус cel, который содержит UITextField?

В первом контроллере представления У меня есть два способа, чтобы войти на второй контроллер

  1. , выбрав уже созданный рутинную
  2. , нажав на кнопку «+» на панели навигации

Если нажать кнопку пресса, данные должны быть вызваны из объекта CoreData, а поля во втором контроллере представления должны быть заполнены.

Но я получаю сообщение об ошибке: фатальной ошибке: неожиданно обнаружил ноль во время разворачивания необязательного значения

ли кто-нибудь знает, как вставить содержимое в пользовательской ячейку статуса под названием «NameCell», который содержит UITextField?

Заранее спасибо, Ace

enter image description here

enter image description here

ответ

0

Если вы используете статические клетки в вашем представлении таблицы в раскадровке, но хотите, чтобы заполнить данные в одном из них, один делает не применяйте ни один из методов UITableViewDataSource, а просто создайте IBOutlet из UILabel, а затем вы можете заполнить его, как вы сочтете нужным.

class ViewController: UITableViewController { 

    @IBOutlet weak var foo: UILabel! 
    var bar: String! // this is populated by `prepareForSegue` of presenting view controller 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     foo.text = bar 
    } 

} 

Как Table View Programming Guide for iOS говорит:

Note: If a table view in a storyboard is static, the custom subclass of UITableViewController that contains the table view should not implement the data source protocol. Instead, the table view controller should use its viewDidLoad method to populate the table view’s data. For more information, see Populating a Static Table View With Data .

+0

Ok большой Попробую его. Наверное, я смутил себя, потому что я хотел убедиться, что переменная «bar» используется только в том случае, если вы обращаетесь к контроллеру с помощью выбора подпрограммы, иначе поля должны оставаться пустыми или значением по умолчанию –

+0

Удачи. Кстати, я замечаю, что ваша попытка 'prepareForSegue' в первом контроллере представления пыталась установить некоторую переменную в первом контроллере представления. Но это недоступно из 'viewDidLoad' целевого контроллера. Обычно у вас есть первый vc, задающий свойство в контроллере назначения (например, в 'prepareForSegue' в первом, вы бы сделали что-то вроде' if let controller = segue.destinationViewController как? AddRoutineTableViewController {controller.foo = ...} '). – Rob

+0

Хорошо, я попробовал это, если контроллер = segue.destinationViewController как? AddRoutineTableViewController { controller.NameCellTextField.text = "test"}, но он выдает сообщение о фатальной ошибке: неожиданно нашел нуль при развертывании необязательного значения –