Делегирование IOS с пользовательскими объектами класса; передать объект из модального представления в родительский вид

Во-первых, я приношу свои извинения за задание другой делегации. Я читал много и не могу найти какую-либо сделку с передачей чего-то сложного...

Вот что я делаю... В моем приложении у меня есть ViewController: CollisionViewController, где я хочу позволить пользователю выбрать два автомобиля, которые участвуют в столкновении. Все транспортные средства хранятся с использованием CoreData и представлены модально в SelectVehicleViewController. SelectVehicleViewController перечисляет все транспортные средства, используя UICollectionView. В CollisionViewController у меня есть свойства для Vehicle1 и Vehicle2, которые имеют собственный класс, который описывает свойства транспортного средства.

В CollisionViewController я использую ********, чтобы пользователь сначала выбирал Vehicle1, а затем Vehicle2 из SelectVehicleViewController, представленный модально.

Я использую секвенции, чтобы определить, какая кнопка была нажата перед представлением модального SelectVehicleViewController.

Как настроить протокол, который позволяет пользователю передать выбранный автомобиль с модального вида на правильный объект транспортного средства в CollisionViewController?

1 ответ

collisionViewController должен соответствовать вашему протоколу.

collisionViewController.h

#import "SelectVehicleViewController.h"
@interface ContactViewController : UIViewController

collisionViewController.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
 if ([segue.identifier isEqual:@"segueName"]) {
 SelectVehicleViewController* VC = segue.destinationViewController;
 VC.delegate = self;
 //here you should probably send if you will select the vehicule 1 or 2
 }
}

- (void)ViewController:(UIViewController *)sender
 didUpdateData:(NSString *)value {
 //do what you need with new data
 //here you should have info if it is for vehicle 1 or 2
}

SelectVehicleViewController.h

@protocol SelectVehicleDelegate;

@interface SelectVehicleViewController : UIViewController

@property (nonatomic, assign) id <selectvehicledelegate> delegate;

@end

@protocol SelectVehicleDelegate <nsobject>

- (void)ViewController:(UIViewController *)sender
 didUpdateData:(NSString *)value; //adapte according to what you should send back

@end
</nsobject></selectvehicledelegate>

SelectVehicleViewController.m

//somewhere in a button click or....
[self.delegate ViewController:self didUpdateData:@"new value"];
 //in this function you should have info if it is for vehicle 1 or 2

licensed under cc by-sa 3.0 with attribution.