Исключение Objective-C выброшено.Имя: NSInternalInconsistencyException Причина: не удалось загрузить NIB в…
Если вы инициализируете viewController с помощью viewController = new LoginViewController();
, а класс имеет конструкторы public LoginViewController() :base("LoginViewController",null)
, он будет искать файл .xib
при запуске,но Visual Studio удалил шаблон viewController with xib
, начиная с 15.7, вы должны создать viewcontroller с раскадровкой, чтобы произошла ошибка.
Вы можете следовать этому учебнику , чтобы реализовать способ, как и раньше.
Но мы настоятельно рекомендуем вам создать viewcontroller, как показано ниже.
Обходной путь 1
Создать новый класс, наследуемый от UIViewController (всего один .cs
)
[Register("LoginViewController")]
public class LoginViewController : UIViewController
{
public LoginViewController()
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.View.BackgroundColor = UIColor.Red;
// Perform any additional setup after loading the view
}
}
Но таким образом вы должны программно управлять пользовательским интерфейсом.
Обходной путь 2
Создайте viewController с раскадровкой, вы можете перетащить ViewController
из панели инструментов в конструктор, указать класс и предоставить идентификатор раскадровки.
В AppDelegate измените способ инициализации контроллера представления.
//viewController = new LoginViewController();
viewController = UIStoryboard.FromName("LoginViewController",null).InstantiateViewController("LoginViewController");
Небольшая вещь
Window
является глобальной переменной в AppDelegate
и используетсяво всем приложении никогда не следует создавать локальную переменную UIWindow
, просто используйте значение по умолчанию Window
.