Podążam za tutorialem Facebooka, aby opublikować wiadomość na ścianie użytkownika: http://developers.facebook.com/docs/howtos/publish-to-feed-ios-sdk/ i mimo, że jest wykonana z myślą o projekcie .xib, udało mi się zrobić wszystko dobrze z moim projektem storyboardów. Jednakże doszedłem do punktu, w którym muszę umieścić kod w initWithNibName: bundle: method, ale nie mogę tego zrobić, ponieważ używam storyboard. A ponieważ trudno jest określić, kiedy dokładnie metoda zostanie wywołana, nie mogę po prostu napisać metody o nazwie initWithNibName: bundle: i wywołać ją z innej metody. Jeśli ktoś ma jakiś pomysł na rozwiązanie mojego problemu, powiedz to. Dzięki.Metoda initWithNibName w scenorysie
Odpowiedz
Sam wpadłem na ten problem. Scenorysy wydają się nie używać initWithNibName:bundle:
, ale albo initWithCoder:(NSCoder *)aDecoder
lublub initWithCoder:(NSCoder *)aDecoder
lub initWithCoder:(NSCoder *)aDecoder
lub initWithCoder:(NSCoder *)aDecoder
.
Wdrożenia domyślne dwóch metod wyglądać następująco:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Custom initialization
}
return self;
}
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
mam jeszcze użyć wersji initWithStyle siebie, ale ja sobie wyobrazić, że to nazywa na UITableViewController. W razie wątpliwości można po prostu dodać obie metody do pliku, wraz z wywołaniem NSLog(), które wypisze nazwę metody (lub dowolny inny unikalny ciąg). Następnie możesz uruchomić go w symulatorze, aby zobaczyć, który jest wywoływany, i usunąć drugi.
Zdecydowanie polecam, aby nie dzwonić pod numer initWithNibName:bundle:
z żadnej z pozostałych metod. Lepiej po prostu przenieść kod do właściwej metody.
jedne z najlepszych rad jakie kiedykolwiek widziałem – finneycanhelp
Jeśli storyboard nie korzysta z initWithNib - dlaczego jest tworzony domyślnie podczas dodawania nowej klasy przy użyciu xcode 4.5 i storyboardu? – Dejell
@Odelya Nie jestem pewien, co to za umowa (jest to zdecydowanie mylące). Wygląda na to, że przynajmniej niedopatrzenie zostanie usunięte z domyślnego szablonu (zwłaszcza, że zachęcamy do używania Storyboards). Nie znalazłem żadnego oficjalnego wytłumaczenia tego, chociaż dokumentacja Apple dla 'initWithNibName: bundle:' mówi, że zamiast tego używa się metody 'initWithCoder:' podczas pracy z Storyboards. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle: – Kitsune
Stworzyłem prosty projekt w GitHub jako przykład przy użyciu FB SDK + iOS 6 i Storyboards. Aplikacja może publikować na osi czasu: [FB SDK i storyboardy z publikowaniem na kanale] (https://github.com/Belzebul/fb-sdk-storyboards) Mam nadzieję, że może się to przydać. –