1

私はモノタッチが初めてで、NavigationViewController の使用に問題があります: FinishedLauching メソッドで、次の行にコメントすると:

window.AddSubview(viewController.NavigationController.View);

ウィンドウは問題なく回転しますが、navigationController は機能しません。この行がコード内 (コメントではない) の場合、navigationController は機能しますが、画面は回転しません。

誰でもこれを解決する方法を知っていますか?

4

1 に答える 1

0

UIWindowのRootViewControllerプロパティを設定することは、NavigationControllerを使用する適切な方法です。

MyViewCtrl ctrl1 = new MyViewCtrl ("One");
_nav = new UINavigationController (ctrl1);

window.RootViewController = _nav;

また、コントローラーのShouldAutorotateToInterfaceOrientationメソッドをオーバーライドすることを忘れないでください。これが完全なサンプルです

[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
    UIWindow window;
    UINavigationController _nav;

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        window = new UIWindow (UIScreen.MainScreen.Bounds);

        MyViewCtrl ctrl1 = new MyViewCtrl ("One");
        _nav = new UINavigationController (ctrl1);

        window.RootViewController = _nav;
        window.MakeKeyAndVisible ();

        return true;
    }
}

public class MyViewCtrl : UIViewController
{
    public MyViewCtrl (string title)
    {
        this.Title = title;
    }

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        this.View.BackgroundColor = UIColor.White;

        if (this.Title.Equals ("One"))
        {
            UIBarButtonItem testButton = 
                new UIBarButtonItem ("Two", UIBarButtonItemStyle.Bordered, 
                                     (object sender, EventArgs e) => {
                    this.NavigationController.PushViewController (
                        new MyViewCtrl ("Two"), true);
                } );
            this.NavigationItem.RightBarButtonItem = testButton;    
        }
    }   

    public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
    {
        return true;
    }
}
于 2012-06-11T02:27:11.523 に答える