Я уверен, что это, вероятно, очень простое решение, но я совершенно новичок в xamarin и C# в целом. Я создал табличное представление, и когда ячейка в этом представлении нажата, я хочу, чтобы она переходила к новому представлению с именем SecondViewController(). У меня есть следующий класс в моем ViewController.csНавигация Xamarin IOS с TableView
public void changeview()
{
SecondViewController controller = this.Storyboard.InstantiateViewController("SecondViewController") as SecondViewController;
this.NavigationController.PushViewController(controller, true);
}
Тогда в моем классе TableSource.cs, я следующий код для вызова changeview()
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
ViewController view = new ViewController();
view.changeview();
tableView.DeselectRow(indexPath, true);
}
Я не получаю ошибок при компиляции, но когда он бежит, я получаю сообщение об ошибке на следующий код
SecondViewController controller = this.Storyboard.InstantiateViewController("SecondViewController") as SecondViewController;
который читает
System.NullReferenceException: Object reference not set to an instance of an object
Почему это не работает? если я использую этот же код в классе кнопок, он отлично работает, чтобы проверить, правильно ли я вызывал класс. Я изменил код в changeview() на UIAlertView и когда была нажата ячейка, действие alertview работало. Я не уверен, куда идти отсюда, возможно, есть лучший метод для изменения взглядов для этой цели? любая помощь очень ценится!
Я просто пробовал этот код, и теперь он дает мне «Произошло необработанное исключение». и я понятия не имею, почему. в вашем someFunction() должен ли быть больше кода после этих двух строк, или это все, что должно быть внутри функции? Должно ли что-нибудь быть вызвано этой функцией? большое спасибо за ответ! – JSheller
Можете ли вы обновить образец кода в вопросе и включить свой первый контроллер просмотра, в котором вы использовали свой навигационный контроллер? Фактически, вы инициализировали объект UINavigationController где-нибудь? В моем примере someFunction() должен быть вашей собственной функцией, например 'viewDidLoad()'. Я обновил свой пример, чтобы устранить путаницы. – vincent