@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@end
@implementation ViewController
— (void) viewDidLoad{
[super viewDidLoad];
self.title = @"First Screen";
}
— (BOOL) textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
— (void) displayTextIsRequired{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: nil
message:@"Please enter some text in the text field"
delegate: nil
cancelButtonTitle: nil
otherButtonTitles:@"OK", nil];
[alert show];
}
— (BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier
sender:(id)sender{
/* Проверяем, есть ли в текстовом поле какой-либо текст. Если текста
там нет, то отображаем пользователю соответствующее сообщение
и не позволяем перейти на следующий экран */
if ([identifier isEqualToString:@"pushSecondViewController"]){
if ([self.textField.text length] == 0){
[self displayTextIsRequired];
return NO;
}
};
return YES;
}
— (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"pushSecondViewController"]){
SecondViewController *nextController =
segue.destinationViewController;
[nextController setText: self.textField.text];
}
}
@end
Метод prepareForSegue: sender: этого контроллера вида вызывает метод экземпляра setText:, относящийся к классу SecondViewController. Как понятно из названия, это класс второго контроллера вида. Мы просто реализуем этот метод следующим образом:
#import «SecondViewController.h»
@interface SecondViewController ()
@end
@implementation SecondViewController
— (void) setText:(NSString *)paramText{
self.title = paramText;
}
@end
Вот и все. Теперь, если вы запустите предложение и введете в текстовое поле текст, скажем, Hello, World! а потом нажмете кнопку, то увидите примерно такую картинку, как на рис. 6.8.
Рис. 6.8. Наш текст успешно отобразился в качестве заголовка второго контроллера вида
См. также
Раздел 6.1.
6.3. Добавление в раскадровку контроллера с панелью вкладок
Постановка задачи
С помощью раскадровок требуется создать приложение, построенное на базе контроллера с панелью вкладок.
Решение
Создайте в Xcode приложение с единственным видом и встройте первый контроллер вида в контроллер вида с панелью вкладок. Чтобы сделать это, выполните следующие шаги.
1. В конструкторе интерфейса выберите в раскадровке контроллер вида. В меню Editor (Редактор) выберите пункт Embed in (Встроить), а затем выберите Tab Bar Controller (Контроллер с панелью вкладок) (рис. 6.9).
Рис. 6.9. Встраивание корневого контроллера вида в контроллер с панелью вкладок
2. Перейдите в библиотеку объектов контроллера интерфейсов, найдите там новый экземпляр контроллера вида и перетащите его в раскадровку.
3. Удерживая нажатой клавишу Ctrl, перетащите указатель мыши из контроллера с вкладками в созданный вами контроллер вида (рис. 6.10). Откроется диалоговое окно, в котором следует найти раздел Relationship Segues (Взаимосвязи через сегвеи) и выбрать в нем View Controller (Контроллер вида) (рис. 6.11).
Рис. 6.10. Соединение контроллера вида с контроллером, имеющим панель вкладок
Рис. 6.11. Ассоциирование контроллера вида с массивом контроллеров видов, находящихся в контроллере с панелью вкладок