Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Попробуйте переименовать контроллер так, как вы хотите:
Шаг 1 Выберите «ваш контроллер» с именем «Делегат» на скриншоте.
Шаг 2 Еще раз нажмите «Делегировать» или нажмите [Enter], чтобы перейти в режим переименования.
Шаг 3 Переименуйте его в нечто значимое.
Шаг 4 Отмените выбор или нажмите [Enter] еще раз, чтобы сохранить изменения. Имя сцены будет обновлено в соответствии с указанным вами именем.
Вот проект, в котором вы можете четко видеть, что это ошибка интерфейса Builder. Я сообщил об этом, но не ответил. Id - 22972580.
Добавление к @Steve Wilford. Ответ:
В доске объявлений Xcode 7 есть ограничение по длине имени контроллера вида, которое будет отображаться в левой панели, которая составляет 15 символов. Все имена, имеющие более 15 символов, будут изменены на странное имя, например «Делегатная сцена» или «Сцена источника данных».
У меня нет прямого ответа, но место для просмотра. К сожалению, это превышает пространство для комментариев, поэтому я должен его здесь поместить. Сожалею.
Если вы выберите раскадровку в проводнике проекта, вы можете открыть исходный код. Раскадровки - это всего лишь файлы XML. Как выглядит viewcontroller? Сравните это со ссылкой, например, с недавно созданной. Возможно, вы можете поделиться частью xml диспетчера представлений? Пример с одним (из коробки) контроллером представления:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="eee" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
Проверьте свойство title вашего контроллера просмотра, имя контроллера представления поступает либо из свойства заголовка, либо из класса. (Заголовок имеет приоритет)
Также вы можете переименовать контроллер вручную, если хотите, как было предложено Стивом
Выберите View Controller
-> Identity Inspector
-> Document Label
и переименуйте его здесь.
Это сработало для меня.