2015-08-20 2 views
2

Когда я перехожу из одной доски в другую раскадровку, кликнув по кнопке signIn, this.NavigationController показывает нуль. поэтому я не могу PushViewController.this.NavigationController is null (xamarin ios stoaryboard)

У меня есть одна табличка с двумя видами, и у двух видов есть отдельные UIViewControllers.

enter image description here

ответ

3

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

// create the view controller for your initial view - using storyboard, code, etc 
var first = new UIViewController(...); 

// wrap your VC inside a Nav controller 
var nav = new UINavigationController(first); 
+0

где я должен помещать этот код. http://prntscr.com/86udcz –

+0

обычно я бы поместил его в свой AppDelegate, когда я назначил свой контроллер корневого представления, но это зависит от архитектуры вашего приложения. – Jason

+0

Это будет работать и является стандартным. Другой способ, которым вы можете это сделать, - добавить контроллер навигации к первой раскадровке, удалить RootViewController, который поставляется с NavigationController, и нарисовать новый Segue из навигационного контроллера в SignInController и установить действие как Root. – Sreeraj

2

Просто добавьте ответ Джейсона. По умолчанию RootViewcontroller является начальным контроллером представления. Что я сделал, чтобы переопределить этот первоначальный контроллер представления с контроллером вида навигации:

[Register("AppDelegate")] 
public class AppDelegate : UIApplicationDelegate 
{ 
    public override UIWindow Window 
    { 
     get; 
     set; 
    } 

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) 
    { 
     Window.RootViewController = new UINavigationController(Window.RootViewController); 
     return true; 
    } 

Это линия, которую я добавил:

Window.RootViewController = new UINavigationController(Window.RootViewController); 

Window.RootViewController: это ViewController, например MainViewController , и я переопределяю этот начальный контроллер, который установлен по умолчанию с помощью навигационного контроллера. Это отлично сработало для меня.

Смежные вопросы