Невозможно вызвать initWithNibName из кода - PullRequest
0 голосов
/ 20 декабря 2011

Так что этот меня бесит, потому что он работает в одних контроллерах представления, но не в других.У меня есть определенный контроллер представления, который имеет собственный метод init, который начинается с вызова стандартного метода initWithNibName для инициализации представления.Однако из-за жизни я не могу заставить этот метод вызываться.Я использую код, идентичный другим контроллерам представления, которые имеют пользовательские методы init и работают нормально, но некоторые просто отказываются вызывать метод.Код, который у меня есть для контроллера, который не работает:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

И пользовательский метод init:

- (id)initWithUser:(TPUser *)selectedUser andFilterMode:(int)mode {
    self = [super initWithNibName:@"RecommendationsView" bundle:nil];
    if (self) {
        [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tabIcon-stream-selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tabIcon-stream.png"]];
        [self.tableView setSeparatorColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.15]];

        user = selectedUser;
        filterMode = mode;

        if (selectedUser != nil) {
            self.title = [NSString stringWithFormat:@"%@ %@", user.firstName, user.lastName];
        } else {
            self.title = @"Stream";
        }
    }
    return self;
}

Код внутри пользовательского метода init вызывается (между проверкой self), но первая строка, которая вызывает [super initWithNibName..., никогда не вызывает метод.Я могу проверить это, поместив NSLog внутри метода, и он никогда не будет зарегистрирован.

Как я уже сказал, это сводит меня с ума, потому что многие другие контроллеры представления в моем проекте используют собственный метод init,звонит initWithNibName точно так же, и все они работают нормально.Но пара из них, в том числе этот пример один, нет.И да, я проверил все простые вещи - имя пера правильное и т.д ...

...