abgewiesen wurde Ich arbeite mit dem Delegaten, während die Daten vom modalen zum präsentierenden View-Controller übertragen werden. Der präsentierende View-Controller zeigt jedoch nicht die Daten an, die er vom Modal empfängt. Ich schaute auf andere Beiträge und sie sagen, die Delegate/Protokoll-Methode zu verwenden, aber nicht erklären, wie/warum die Präsentation VC aktualisiert. Ich nehme an, mein Delegat ist falsch eingerichtet. Was ist die Methode zum Aktualisieren der Daten? Ich habe überprüft und die ViewWillAppear und ViewDidAppear wird nicht aufgerufen.Aktualisieren von Daten in einem UIViewController, nachdem der präsentierte Modal-View-Controller über den Delegaten
SCCustomerDetailVC.h (Presenting VC)
#import "SCCustomersVC.h"
@interface SCCustomerDetailVC : UIViewController <SCCustomersVCDelegate>
@property (atomic, strong) SCCustomer *customer;
@property (strong, nonatomic) IBOutlet UIButton *changeCustomerButton;
- (IBAction)changeCustomerButtonPress:(UIButton *)sender;
@end
SCCustomerDetailVC.m (Presenting VC)
- (IBAction)changeCustomerButtonPress:(UIButton *)sender
{
UINavigationController *customersNC = [self.storyboard instantiateViewControllerWithIdentifier:@"customersNC"];
SCCustomersVC *customersVC = (SCCustomersVC *)customersNC.topViewController;
customersVC.delegate = self;
[self presentViewController:customersNC animated:YES completion:nil];
}
//Protocol methods
- (void)passCustomer:(SCCustomer *)customer
{
self.customer = customer;
//At this point, self.customer has the correct reference
[self dismissViewControllerAnimated:YES completion:nil];
}
SCCustomersVC.h (Modal VC)
#import "SCCustomersVCDelegate.h"
@class SCCustomerDetailVC;
@interface SCCustomersVC : UIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate>
@property (weak, nonatomic) id <SCCustomersVCDelegate> delegate;
@end
SCCustomersVC.m (Modal VC)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SCCustomer *customer = [self customerAtIndexPath:indexPath];
[self.delegate passCustomer:customer];
}
SCCustomersVCDelegate.h
@class SCCustomer;
@protocol SCCustomersVCDelegate <NSObject>
@optional
- (void)passCustomer:(SCCustomer *)customer;
@end
Was haben Sie nach dem Aufstehen die richtige Referenz in Ihrem Delegaten. – Zen
@Zen Yup, es tut mir leid, dass ich euch alle bedrückt habe. Aus irgendeinem Grund dachte ich, dass es letzte Nacht in meinem müden Zustand "magisch" aktualisiert werden würde. Ich muss Code hinzufügen, um es zu aktualisieren. – guptron