기본 탐색 컨트롤러를 사용하는 대신 내 탐색 컨트롤러의 역할을하는 사용자 지정 UIViewController 클래스를 구현하려고합니다. 다음은 내 컨테이너 클래스 나는이된다Mvvmcross - Container UIViewController
enter code here
공공 부분 클래스 ContainerView : MvxViewController { 정적 부울 UserInterfaceIdiomIsPhone { 의 get {UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone를 반환; }}
private UIViewController _currentView;
protected ContainerViewModel ContainerModel
{ get { return base.ViewModel as ContainerViewModel; } }
public ContainerView()
: base (UserInterfaceIdiomIsPhone ? "ContainerView_iPhone" : "ContainerView_iPad", null)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
var loginView = this.CreateViewControllerFor(ContainerModel.Login) as UIViewController;
ShowViewController(loginView);
// Perform any additional setup after loading the view, typically from a nib.
}
public ContainerView(UIViewController controller)
: base(UserInterfaceIdiomIsPhone ? "ContainerView_iPhone" : "ContainerView_iPad", null)
{
ShowViewController(controller);
}
public void ShowViewController(UIViewController viewController)
{
if (_currentView !=null)
{
RemoveCurrentViewController();
}
AddChildViewController(viewController);
viewController.View.Frame = GetViewFrame();
containerView.AddSubview(viewController.View);
_currentView = viewController;
viewController.DidMoveToParentViewController(this);
}
public void RemoveCurrentViewController()
{
_currentView.WillMoveToParentViewController(null);
_currentView.View.RemoveFromSuperview();
_currentView.RemoveFromParentViewController();
}
public RectangleF GetViewFrame()
{
return containerView.Bounds;
}
}
로그인 뷰가 뾰족 출구 인 containerView에로드 될 때 제 내 부하가 미세하다. 문제는 내 콘센트가 null 인 후속 요청입니다. 나는이 잘못된 일을 할 수 있지만 다음에 따라 발표자 표시 방법에서의 ViewController를 설정하려고 시도하고 다음 "viewDidLoad에"내 콘센트가 null가 터지지 않 같은 쇼에서 다른 문에 대한
public class MyPresenter: MvxTouchViewPresenter
{
private static ContainerView _cv;
public BlackhawkPresenter(MvxApplicationDelegate appDelegate, UIWindow window)
: base(appDelegate, window)
{
_cv = new ContainerView();
window.RootViewController = _cv;
}
protected override UINavigationController CreateNavigationController(UIViewController viewController)
{
return new BlackhawkNavigationController(viewController);
}
public override void Show(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest request)
{
var viewController = (UIViewController)Mvx.Resolve<IMvxTouchViewCreator>().CreateView(request);
if(request.ViewModelType == typeof(ContainerViewModel))
base.Show(request);
else
_cv.ShowViewController(viewController);
}
}
. ShowViewModel에 대한 호출을 인터셉트하여 컨테이너 뷰의 컨테이너 클래스에 표시하는 것이 확실하지 않습니다.
뭐하는거야? 당신은 당신의 대답을 제거해서는 안됩니다. 그것은 매우 나쁜 스타일입니다. 다른 사람이 비슷한 문제가 있다면? 그것은 당신의 질문에 대답하려고하는 사람들에게 매우 무례합니다! – j7nn7k