Мне нужно передать данные между различными представлениями в моем приложении.Различные представления используются для установки свойств класса, который используется во всем приложении.
Мне как-то удалось достичь этого, передавая копии класса вокруг представлений и устанавливая соответствующие свойства, когда рассматриваемое представлениезакрыто, но я не уверен, что это лучший способ добиться того, что мне нужно сделать.
См. ниже мой псевдокод:
- У меня есть класс 'Car',со свойствами: carColor, carEngineSize, carFuelType ...
- MainView в приложении отображает класс Car и использует его методы.Это представление, с которым взаимодействуют конечные пользователи.
- CarSettingsView, доступный из MainClass (PopOverFromBarButtonItem :) открывает всплывающее окно настроек, которое позволяет пользователю изменять свойства класса Car с использованием различных UITableLayouts
Класс автомобиля:
@interface Car : NSObject
{
id delegate;
NSString *carModel;
NSString *carColor;
BOOL turboCharged;
int carEngineSize;
NSString *carFuelType;
}
@property [...]
MainView реализует класс myCar , который используется в приложении.
CarSettingsView:
Реализация dummyCar Car.
@class Car;
@interface SettingsPopOver : UITableViewController <UIPopoverControllerDelegate>
{
NSMutableArray *tableContentsArray;
UINavigationController *navigationController;
SetParametersView *paramView;
Car *dummyCar;
}
При вызове CarSettingsView из MainView я передаю myCar :
- (IBAction)btnSettings:(id)sender {
settings = [[SettingsPopOver alloc]init];
[settings setDummyCar:myCar]; //Pass over myCar from the MainView
UIPopoverController *aPopOver = [[UIPopoverController alloc]initWithContentViewController:settings];
//self->popOverController = aPopOver;
popOverController = aPopOver;
popOverController.delegate = self;
[popOverController setPopoverContentSize:CGSizeMake(300, 400)];
[popOverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Затем я выполняю любые изменения свойств непосредственно на dummyCar в представлении настроек, затем копирую dummyCar обратно в myCar при закрытии представления настроек:
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
myCar = [settings dummyCar];
}
Это работает хорошо для меня.Но я не уверен, что это правильный путь, также он становится немного неловким, когда несколько представлений настроек вложены, и объект должен быть передан вниз на несколько слоев, а затем обратно в главное представление, где находится исходный объект.
Рад слышать комментарии по этому поводу и / или онлайн-ссылки, которые укажут мне правильное направление.