Это второй вопрос, который вы сегодня задали по тому же вопросу, и большая часть того, что вы делаете, неверна. Чтобы передавать данные между контроллерами, вы не должны использовать делегат приложения, и вы не должны использовать одноэлемент. Что вам нужно сделать, так это вернуться к основам и попытаться понять, что вы делаете. Передача данных между двумя контроллерами - это простой трехэтапный процесс:
- Создайте объект в своем «контроле» для просмотра данных.
- Получите ссылку на контроллер «переход к», который у вас есть или будет отображаться на экране.
- Задайте значение этого свойства, которое вы создали, с данными вашего контроллера «переход от».
Шаг, который вызывает большинство новичков, является # 2. Вы не можете просто выделить init экземпляр контроллера «переход к», вам нужно получить ссылку на созданную вами, как правило, в xib или раскадровке. Как именно это зависит от того, как эти два контроллера связаны друг с другом. Создает ли экземпляр другого, а затем нажимает или представляет его? Это «переход к» контроллеру, созданному в xib, раскадровке или в коде? Являются ли контроллеры встроенными в контроллер навигации или контроллер панели вкладок? Вы переходите ко второму контроллеру в коде или непосредственно с помощью segues? Это те вопросы, о которых вам нужно подумать, и понять, как отвечать, поэтому вы можете получить все правильно с любой настройкой, которую у вас есть.
Если вы можете объяснить вам контроллера установки (как два связаны друг с другом, и где вы сделали их), я могу указать вам на более конкретный ответ на шаге 2.
После Edit:
Когда вы перемещаетесь между видами с помощью segues, место, куда вы передаете данные, находится в prepareForSegue. TipsViewController будет segue.destinationViewController, так что вы сделать это следующим образом:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"segueName"]) {
TipsViewController *tipsVC = [segue destinationViewController];
tipsVC.bmi = self.bmi;
}
}
В этом примере предполагается, что вы создали свойство в TipsViewController называется BMI, и что вы один называется, что в ViewController, а также. Все это описано в «Руководстве по программированию контроллера просмотра для iOS», которое вы должны изучить.
1.) Я двигаюсь непосредственно с помощью segues. 2.) Они представляют собой контроллеры с одним представлением. 3.) Вот как они соотносятся друг с другом. Первый контроллер представления (ViewController) вычисляет BMI пользователя, а затем отображает его на этикетке. Для получения дополнительной информации о результатах пользователя пользователь может нажать кнопку, чтобы перейти к следующему контроллеру представления (TipsViewController). TipsViewController будет отображать информацию, основанную на результатах пользователя, и я не могу передать ее. Некоторый вызов BMI для определенных объектов отображается на ConnectViewController. Мне нужен окончательный BMI, который будет использоваться среди просмотров. –
@LoganLarroque, я отредактировал свой ответ. – rdelmar
Хорошо, я поставил код, который вы предоставили в моем ViewController.m, и создал 2 свойства. Мой вопрос: что мне связать свойство в TipsViewController тоже, если у меня нет метки, присутствующей в представлении? Кроме того, я получаю много ошибок, потому что мой ярлык из ViewController (bmiView.text) недоступен в TipsViewController. Вот фрагмент кода: 'if ([** bmiView.text ** floatValue] <16.00) { category.image = [UIImage imageNamed: @" bmi__0009_SEVTHIN.png "]; strictThin.image = [UIImage imageNamed: @ "bmi__0011_MARKER"]; ' –