#ios #objective-c #xcode #view #uiviewcontroller
#iOS #objective-c #xcode #Вид #uiviewcontroller
Вопрос:
Как мне программно создать представление для раскадровки? Я хочу получить доступ к меткам из первого созданного объекта ViewController (автоматически для вызова методов IBAction VC). Я знаю, что этот первый объект VC связан с представлением в раскадровке (?), И мне нужно изменить метку в другом файле, помимо VC. Я почти уверен, что единственный способ сделать это — получить доступ к объекту VC, который связан с представлением, или создать его, а не использовать созданный по умолчанию. Если нет, то как бы мне получить доступ к меткам представления из другого файла?
Комментарии:
1. Сложно понять, что вы хотите сделать, может быть, попробуйте объяснить это немного подробнее и с примерами кода или файлов, из которых состоит ваше приложение?
2. Вы также упоминаете создание представления программно, но вы упоминаете раскадровку ibaction. Как правило, вы не будете программно создавать представление, если используете раскадровку / NIBS.
3. Я хочу создать представление программно, чтобы я мог изменять метки из другого файла, помимо VC. @Маркгибсон . Я думаю, что программа создает объект VC, который ссылается на представление, и я хочу создать этот объект сам, чтобы я мог изменить его метки, которые связаны с представлением. Создание другого объекта VC не помогает изменить метки в представлении, потому что созданный мной объект не связан с представлением.
4. Изменение содержимого метки из другого класса не имеет никакого отношения к тому, выполняется ли представление в IB или в коде. Вам действительно не следует этого делать ни в коем случае — если вы хотите изменить текст, передайте новую строку контроллеру, у которого есть метки, и позвольте этому контроллеру обновить свой собственный пользовательский интерфейс.
Ответ №1:
Вы не создаете объекты раскадровки программно. Раскадровка — это, по сути, XML-файл, который Xcode использует для вызова различных контроллеров представления. Самое большое преимущество использования раскадровок по сравнению с NIBS заключается в том, что вы можете компоновать переходы или сегменты, а преимущество NIBS или раскадровок перед инициализацией контроллеров представления с помощью кода, очевидно, заключается в визуальном интерфейсе. Итак, ваш вопрос на самом деле не имеет смысла. Если вы хотите ссылаться на метку определенного контроллера представления из своей раскадровки, вам нужно сначала создать указатель на этот контроллер представления, но изменять его программно не имеет смысла, потому что для этого и предназначена раскадровка. Тем не менее, вам может просто понадобиться поискать имя вашего класса в инспекторе идентификации вашего контроллера представления в раскадровке, а затем отредактировать вашу метку программно с помощью свойства IBOutlet.