Создание UISwitch программно
В кажущейся бесконечной попытке узнать больше о разработке для iphone, я поигрался с некоторыми исходными кодами, доступными на веб-сайте разработчиков Apple. Конкретный пример, с которым я работаю, это Core Data Books,Вот, DetailViewController и AddViewController создаются программно, поскольку для них нет файлов XIB. Мой вопрос о программном добавлении вещей в представление без использования IB. Я хочу поместить UISwitch под UITableView, который содержит подробную информацию о конкретной книге в DetailView. Как мне это сделать? Это то, что я пробовал до сих пор:
В AddViewController я устанавливаю переключатель UIS:
@interface AddViewController : DetailViewController {
id <AddViewControllerDelegate> delegate;
UISwitch *onoff;
}
@property (nonatomic, assign) id <AddViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UISwitch *onoff;
Я также настраиваю IBAction:
- (IBAction)flip:(id)sender;
Затем я синтезирую его в файле AddViewController.m, но ничего не происходит. Мне просто нужно настроить коммутатор и сделать так, чтобы я мог контролировать, что он делает, с помощью моего IBAction, который я настроил. Я знаю, что это невероятно просто, но я не могу понять это. Таким образом, любая помощь будет оценена! Спасибо
Редактировать 1
Итак, я реализовал код так, как мне было указано в viewDidLoad, примерно так:
- (void)viewDidLoad {
[super viewDidLoad];
UISwitch *onoff = [[UISwitch alloc] initWithFrame: CGRectZero];
[onoff addTarget: self action: @selector(flip:) forControlEvents:UIControlEventValueChanged];
// Set the desired frame location of onoff here
[self.view addSubview: onoff];
И он выдает два предупреждения о том, что локальное объявление onoff скрывает переменную экземпляра. Но даже при том, что есть эти доходы, UISwitch просто замечательно появляется, но когда я его перемещаю или использую, не похоже, что он работает полностью. Для моего действия, которое выглядит так:
- (IBAction)flip:(id)sender {
if (onoff.on) NSLog(@"On");
else NSLog(@"Off");
}
Когда коммутатор включен, консоль должна читать, а когда он выключен, консоль должна считывать. Правильно? Каждый раз, когда я перемещаю его, он просто повторяется в консоли, выключен. Если он включен или выключен, он только показывает. Что в мире я делаю не так? Пожалуйста помоги! Спасибо