Bu sorunun burada birçok kez sorulmuş ve yanıtlanmış olduğunu biliyorum. Ama bu şeyle ilk defa ilgileniyorum ve hala aklımda mükemmel bir uygulama yapamıyorum. İşte kod, SecondViewController
'dan FirstViewController
'a veri aktarmak için uyguladığım temsilci yöntemine sahibim.2 UIViewController arasında delege ve protokol kullanılarak veri aktarımı
FirstViewController.h
#import "SecondViewController.h"
@interface FirstViewController : UITableViewController<sampleDelegate>
@end
FirstViewController.m
@interface FirstViewController()
// Array in which I want to store the data I get back from SecondViewController.
@property (nonatomic, copy) NSArray *sampleData;
@end
@implementation FirstViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SecondViewController *controller = [[SecondViewController alloc] init];
[self.navigationController pushViewController:controller animated:YES];
}
@end
SecondViewController.h
@protocol sampleDelegate <NSObject>
- (NSArray*)sendDataBackToFirstController;
@end
@interface SecondViewController : UITableViewController
@property (nonatomic, strong) id <sampleDelegate> sampleDelegateObject;
@end
SecondViewController.m
@interface SecondViewController()
@property (strong, nonatomic) NSArray *dataInSecondViewController;
@end
@implementation SecondViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.dataInSecondViewController = [NSArray arrayWithObjects:@"Object1", @"Object2", nil];
}
- (NSArray*)sendDataBackToFirstController
{
return self.dataInSecondViewController;
}
@end
Doğru mı yapıyorum? Tüm bu verileri self.dataInSecondViewController
içinde FirstViewController
'a göndermek ve ürününde saklamak istiyorum.
Bir şekilde FirstViewController
ürününe erişemiyorum. sendDataBackToFirstController
'a erişmek için uygulamakta kalacağım başka şeyler var mı?
takip edin ikinci vc. Yani ikinci vc delegesi yönteminin ilk vc'de uygulanması gerekir. Ardından olay tetiklendiğinde ikinci vc yöntemini çağırın. Senaryonuzdan veri kaynağı veya temsilci almak isteyip istemediğinize dair belirsizdir. İlk vc için veri kaynağı olarak ikinci vc kullanırsanız, veri isteyen ilk vc'dir. Ama sadece ikinci vc'de bir olay gerçekleştiğinde, o zaman delege türünü ilk vc'ye geri döndürmek istiyorsunuz. Ardından, dönüş türünü geçersiz kılmak ve verileri argüman olarak iletmeniz gerekir. – Anupdas
Doğru. İlk vc'imin didSelectRow ... 'da controller.delegate = self yapmayı denedim. Ancak bir şekilde denetleyici temsilci nesnesini bulamıyor. Kodum şu ana kadar doğru görünüyor mu? –
@gdavis ve art'ın cevaplarını takip edin – Anupdas