Подтвердить что ты не робот

Контроллер Push View, черный экран

Я подталкиваю к новому контроллеру представления и передаю ему некоторые данные. Когда я запускаю приложение, я могу нажать кнопку и нажать на новое представление, но экран полностью черный. Любая помощь приветствуется.

- (IBAction)button:(id)sender {

    NSString *firstField = self.field.text;
    NSString *secondField = self.field2.text;

    self.resultsArray = [[NSArray alloc] initWithObjects:firstField, secondField, nil];

    NSUInteger randomResult = arc4random_uniform(self.resultsArray.count);
    self.label.text = [self.resultsArray objectAtIndex:randomResult];

    ImagesViewController *ivc = [[ImagesViewController alloc] init];
    ivc.label = self.label.text;
    [self.navigationController pushViewController:ivc animated:YES];

}
4b9b3361

Ответ 1

Когда вы используете раскадровку и хотите нажать контроллер представления в коде (а не на segue), вам нужно дать контроллеру идентификатор и создать его следующим образом:

    ImagesViewController *ivc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyIdentifier"];
    ivc.label = self.label.text;
    [self.navigationController pushViewController:ivc animated:YES];

Ответ 2

Контроллер представления, на который вы нажимаете, не имеет установленного размера кадра. Всегда рекомендуется вызывать назначенный init для объектов. Для контроллеров представлений назначенный метод init

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

если у вас есть xib, назначьте его как

ImagesViewController *ivc = [[ImagesViewController alloc] initWithNibName:<your xib> bundle:[NSBundle mainbundle];

если вы используете пользовательский вид, назначьте размер кадра и добавьте его как subview

Ответ 3

Xcode 7.3 и Swift 2.2

В моем случае я внес изменения в раскадровку и сделал ее TabBarController и соответственно изменил класс контроллера с UIViewController на UITabBarController. После некоторой настройки это изменение не было благоприятным, и я сделал все изменения и получил черный экран, потому что я забыл изменить класс контроллера. Я изменил его обратно на UIViewController, и он снова начал работать.

Итак, проверьте, не сделали ли вы такую ​​же ошибку. Черный экран появился потому, что у раскадровки был класс (UIView/UITabBar/UITableView Controller), но это не то же самое в коде.

Ответ 4

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

Ответ 5

У меня хороший:

Убедитесь, что вы используете правильный класс Super, делегат и т.д. в верхней части viewController, которую вы пытаетесь представить. то есть.

Я вообще не использовал/не выполнял UINavigationController

class TMDetailBlogViewController: UINavigationController {
  //code goes here
}

После

class TMDetailBlogViewController: UIViewController {
  //code goes here
}

Ответ 6

Обычно вы переходите к другому контроллеру представления, вызывая:

initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

на вашем пользовательском UIViewController.

Если вы не используете xib файл, то то, что вы делаете, может быть прекрасным. Вы динамически создаете элементы пользовательского интерфейса внутри конструктора вашего ImageViewController?