Я следую учебнику Facebook для публикации на стене пользователя: http://developers.facebook.com/docs/howtos/publish-to-feed-ios-sdk/ и хотя он сделан с проектом .xib, я смог сделать все, что в моих силах, до сих пор. Тем не менее, я дошел до того, что мне нужно поместить некоторый код в метод initWithNibName: bundle:, но я не могу этого сделать, потому что я использую раскадровку. И, поскольку трудно сказать, когда именно будет вызван метод, я не могу просто написать метод с именем initWithNibName: bundle: и вызвать его из другого метода. Если кто-нибудь знает, как решить мою проблему, скажите об этом. Спасибо.
Метод initWithNibName в раскадровке
Ответ 1
Я сам столкнулся с этой проблемой. Похоже, что раскадровки не используют initWithNibName:bundle:
, но либо initWithCoder:(NSCoder *)aDecoder
, либо initWithStyle:(UITableViewStyle)style
.
Стандартные реализации двух методов выглядят следующим образом:
- (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;
}
Мне еще нужно использовать версию initWithStyle, но я бы предположил, что он вызвал UITableViewController. Если вы сомневаетесь, вы можете просто добавить оба метода в файл вместе с вызовом NSLog(), который печатает имя метода (или любую другую уникальную строку). Затем вы можете запустить его в симуляторе, чтобы увидеть, что вызвано, и удалить другое.
Я настоятельно рекомендую не вызывать initWithNibName:bundle:
себя из любого другого метода init
. Лучше просто переместить код в правильный метод.