Я быстро взглянул на шаблон и думаю, что вы путаетесь с тем, для чего используется делегат.
Делегат в этом шаблоне не передает данные.Когда вы нажмете кнопку «Готово», она перезвонит на MainViewController
и попросит вызвать метод dismissModalViewControllerAnimated
, чтобы он мог удалить контроллер представления.Это кажется немного излишним, так как документация гласит:
If you call this method on the modal view controller itself, however, the modal view controller automatically forwards the message to its parent view controller.
. Поэтому вам не нужно вызывать родителя, чтобы сделать это.
В Интерфейсном конструкторе вы можете видеть, что FlipsideView.xib
имеет File's Owner
значение FlipsideViewController.xib
.
Теперь, если вы щелкните правой кнопкой мыши File's Owner
, вы увидите, что view
подключен к View
, это в основном означает, что view
является именем свойствав FlipsideViewController
и View
это элемент в Интерфейсном Разработчике.
Поэтому мы можем получить доступ к элементам в файле xib из FlipsideViewController
, используя выходы.
Чтобы нарисовать метку, вам нужно сделать пару вещей
Сначала добавить свойство в .h и синтезировать его в .m как
// FlipsideViewController.h
@interface FlipsideViewController : UIViewController
@property (nonatomic, retain) IBOutlet UILabel *testLabel; // <----- Added this
@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate;
- (IBAction)done:(id)sender;
@end
// FlipsideViewController.m
@implementation FlipsideViewController
@synthesize delegate = _delegate;
@synthesize testLabel = _testLabel; // <----- Added this
// More methods
- (void)dealloc
{
[_testLabel release]; // Always do you memory management
[super dealloc];
}
Затем вернуться вInterface Builder
- Добавьте элемент
UILabel
к вашему виду ctrl + drag
из File's Owner
в UILabel
, который вы добавили - Выберите метку вмой пример это
testLabel
Теперь они правильно подключены.Место, где вы хотите установить значение метки, находится в viewDidLoad:
, что вы можете теперь сделать следующим образом:
- (void)viewDidLoad
{
[super viewDidLoad];
self.testLabel.text = @"It Works"; // You would use the data passed in from `MainViewController`
}