загрузка другой раскадровки, вызывающей ошибку

Я пытаюсь загрузить другую раскадровку, но получаю эту ошибку. Ожидается, что окна приложений будут иметь корневой контроллер представления в конце запуска приложения. Может кто-нибудь мне помочь

- (UIStoryboard *)grabStoryboard {

    UIStoryboard *storyboard;

    // detect the height of our screen
    int height = [UIScreen mainScreen].bounds.size.height;

    if (height == 480) {
        storyboard = [UIStoryboard storyboardWithName:@"iPhone_4" bundle:nil];
        // NSLog(@"Device has a 3.5inch Display.");
    }
    if(height == 568)
    {
        storyboard = [UIStoryboard storyboardWithName:@"iPhone_5" bundle:nil];
        // NSLog(@"Device has a 4inch Display.");
    }
    if(height == 667)
    {
        storyboard = [UIStoryboard storyboardWithName:@"iPhone_6" bundle:nil];
        // NSLog(@"Device has a 4inch Display.");
    }

    if(height == 736)
    {
        storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        // NSLog(@"Device has a 4inch Display.");
    }

    return storyboard;
}

person Eunice    schedule 19.05.2015    source источник
comment
Ошибка почти наверняка заключается в вашей функции applicationdidfinishlaunching внутри вашего appdelegate. Опубликуйте это также   -  person chedabob    schedule 19.05.2015
comment
В качестве примечания: у вас действительно не должно быть причин загружать разные раскадровки для каждого размера экрана iPhone. Классы автоматического макета и размера могут справиться с этим гораздо более элегантным и управляемым способом...   -  person Yann Bodson    schedule 17.08.2016


Ответы (2)


Вы получаете эту ошибку, потому что компилятор видит случай, когда ваша функция может вернуть неинициализированную переменную раскадровки. Это могло бы произойти, если бы ни одно из утверждений if не было истинным. Поэтому лучше переписать эту функцию, чтобы она всегда возвращала инициализированную переменную раскадровки. Мое предложение - изменить способ определения модели устройства. Взгляните на этот сообщение для подсказки.

person salabaha    schedule 19.05.2015

Я думаю, что у одной или нескольких ваших раскадровок нет точки входа, обязательно проверьте их все. вы можете проверить официальный документ здесь точка входа для раскадровки

person MedAmine.Rihane    schedule 16.08.2016