Son zamanlarda Xcode içindeki MainStoryboard.storyboard ile çalışmayı denedim ve şu ana kadar oldukça iyi gidiyor ve neden daha önce hiç kullanmadığımı merak ediyorum. Bazı kodlarla oynarken bir engele çarptım ve bunu nasıl çözeceğimi bilmiyorum.Storyboard ve özel init
Ben Alloc ve böyle bir şey yapacağını (ı ViewControllers sınıfta bildirilen özel bir init ile) yeni bir ViewController init zaman:
:ViewController *myViewController = [[ViewController alloc] initWithMyCustomData:myCustomData];
ondan sonrada ben böyle bir şey yapabileceğini
[self presentViewController:myViewController animated:YES completion:nil];
Bir storyboard ile çalışırken, bağımsız bir ViewController uygulamasına geçmenin bir Tanımlayıcı gerektirdiğini öğrendim.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];
[self presentViewController:myViewController animated:YES completion:nil];
Hikaye panosundan yararlanırken myViewController için özel başlatmamı nasıl kullanabilirim?
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];
myViewController.customData = myCustomData;
[self presentViewController:myViewController animated:YES completion:nil];
//MyViewController.m
- (id) initWithMyCustomData:(NSString *) data {
if (self = [super init]) {
iVarData = data;
}
return self;
}
teşekkürler. Apple'ın Storyboard'ları ile uygun bir özel 'init 'yöntemi oluşturmamanın bir çılgınlığı olmadığını çılgınca görüyor. – jowie
Neden birinin açıklanacağından emin değilim: "Tüm initWithCustomData yönteminiz bir örnek değişkenini ayarladıysa, bunu yalnızca manuel olarak ayarlamanız gerekir (özel girişler veya fazladan yöntemler gerekmez)". Apple'ın herhangi bir okuyucuyu bu ifadeyi sadece bir fikir değil, izleyecek bir kural olarak değerlendirmesini tavsiye eden bir belge yoktur. IOS’ta çok sayıda başlatıcı bile tek bir argüman alır. – zumzum
@zumzum Apple, örnek kodlarında 'prepareForSegue: sender:' yöntemindeki değişkenleri ayarlama pratiğini kullanır. [EKReminderSuite] 'de' AddTimedReminder.m 'dosyasına bakın (https://developer.apple.com/library/prerelease/ios/samplecode/EKReminderSuite/Introduction/Intro.html#//apple_ref/doc/uid/TP40015203- Intro-DontLinkElementID_2) örnek bir örnek proje. –