ho delegato a lavorare come i dati vengono passati dalla modal al controller della vista presentazione. Ma il controller della vista che presenta non mostra i dati che riceve dal modale. Ho guardato in altri posti e dicono di utilizzare il metodo delegato/protocollo, ma non spiegano come/perché il VC presentando rinfresca. Suppongo che il mio delegato sia impostato in modo errato. Altrimenti, qual è il metodo per aggiornare i dati? Ho controllato e viewWillAppear e viewDidAppear non vengono richiamati.Aggiornamento dei dati in un UIViewController Dopo aver respinto il suo controller di vista modale presentata tramite delegato
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 (modale 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
Cosa hai fatto dopo aver ottenuto il riferimento corretto nel tuo delegato. – Zen
@Zen Yup, mi dispiace per turbare tutti voi per questo. Per qualche ragione, ho pensato che sarebbe "magicamente" aggiornato da sola la scorsa notte nel mio stato di stanchezza. Devo aggiungere il codice per aggiornarlo. – guptron