17

Monotouch を 6 にアップグレードしたところ、アプリが起動しなくなりました。以前は問題なく動作していました。ここで、Main.cs ファイルで例外 (以下にリスト) をスローします。Xamarin のトラブルシューティングのヒントを調べましたが、問題は解決しませんでした。nib ファイルを再レイアウトし、コンセントを削除して再構成し、まったく新しい nib を作成して、問題が解決するかどうかを確認しました。他に考えがある人はいますか?

MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSUnknownKeyException Reason: [<UIApplication 0xc84bb10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key btnNewAccount.
   at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
   at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
   at Pokr.Application.Main (System.String[] args) [0x00000] in /Users/James/Projects/App/Main.cs:17

LoginView.designer.cs のコード:

[Register ("LoginView")]
partial class LoginView
{
    [Outlet]
    MonoTouch.UIKit.UIImageView imgLogo { get; set; }

    [Outlet]
    MonoTouch.UIKit.UITextField txtEmail { get; set; }

    [Outlet]
    MonoTouch.UIKit.UITextField txtPassword { get; set; }

    [Outlet]
    MonoTouch.UIKit.UIButton btnLogin { get; set; }

    [Outlet]
    MonoTouch.UIKit.UIButton btnNewAccount { get; set; }

    [Outlet]
    MonoTouch.UIKit.UILabel lblSecurityNotice { get; set; }

    [Outlet]
    MonoTouch.UIKit.UIImageView imgKeyboardBorder { get; set; }

    void ReleaseDesignerOutlets ()
    {
        if (imgLogo != null) {
            imgLogo.Dispose ();
            imgLogo = null;
        }

        if (txtEmail != null) {
            txtEmail.Dispose ();
            txtEmail = null;
        }

        if (txtPassword != null) {
            txtPassword.Dispose ();
            txtPassword = null;
        }

        if (btnLogin != null) {
            btnLogin.Dispose ();
            btnLogin = null;
        }

        if (btnNewAccount != null) {
            btnNewAccount.Dispose ();
            btnNewAccount = null;
        }

        if (lblSecurityNotice != null) {
            lblSecurityNotice.Dispose ();
            lblSecurityNotice = null;
        }

        if (imgKeyboardBorder != null) {
            imgKeyboardBorder.Dispose ();
            imgKeyboardBorder = null;
        }
    }

Main.cs からのコード (コードが壊れている場所):

    static void Main (string[] args)
    {
        UIApplication.Main (args, null, "AppDelegate");
    }

ViewController を呼び出す AppDelegate のスニペットを次に示します。

        var rootNavigationController = new UINavigationController();

        LoginView loginScreen = new LoginView();
        rootNavigationController.PushViewController(loginScreen, false);

        this.window.RootViewController = rootNavigationController;

        //blank function fires so the getter will init the singleton.
        Singleton.Instance.Initialize();

        // make the window visible
        window.MakeKeyAndVisible ();


        return true;
4

5 に答える 5

18

このエラーはViewController、コード内でViewController初期化したが、XIB ファイルからも初期化した場合に発生します。

ViewControllerこれは、コードで作成している「メイン インターフェイス」の値が a に設定されている場合に発生する可能性があります。この問題を解決するには、この値を空にすると、noViewControllerが自動的に初期化されます。

また、pInfo ファイルをチェックして、メイン インターフェイス セットがあるかどうかを確認します。

Xamarinユーザーにこのヒントを提供してくれた@Bartに感謝します。

Xamarin Studio (v.4) でプロジェクトを右クリックし、[セクション] を選択'Options'します。ドロップダウンをクリアすると、問題が解決するはずです。'iOS Project''iPad Deployment info''Main Interface'

于 2012-09-25T04:44:20.897 に答える
3

理由は次のとおり[<UIApplication 0xc84bb10> setValue:forUndefinedKey:]です。言っていないことに注意してください: [<LoginView 0xc84bb10> setValue:forUndefinedKey:]. -setBtnNewAccount:ここで、何がUIApplication のインスタンスにメッセージを送信しようとしているのかを把握する必要があります。

デリゲートがどこかで間違って設定されているようです。

于 2012-09-25T02:02:38.030 に答える
2

ボタンからアウトレットを作成する際にも同様の問題があったため、それらを削除してアウトレットを作成しました。どこかで XCode と Xamarin の間の同期が正しく行われていませんでした...

私にとっての修正は、ボタンを削除した後、デザイナー ファイル内のすべての参照を手動で検索して削除することでした。

お役に立てれば...

于 2014-04-30T08:28:40.787 に答える
1

Xamarin Studio (5.9.5) の最近のビルドでも、この問題に直面しました。「Xcode と同期」オプションはグレー表示されていましたが、明らかに、Tamarin の ViewController xib ファイルは Xcode と同期していませんでした。

修正は、Hutjepower によって言及されたものと同じでした。Xamarin Studio 内で壊れた参照を検索し、Xamarin 内で xib ファイルを開き (ファイルを右クリックしてソース コード エディターを使用)、Xcode で削除したコントロールを削除しました。これにより、この問題が修正されました。

于 2015-08-18T16:21:54.173 に答える
1

Xamarin Studio 5.10.1 でもこの問題が発生しています。最終的に、テキスト エディターを使用してストーリーボード ファイルを編集し、

<connections></connections>

それは私のために問題を解決しました。

于 2016-01-01T15:45:22.537 に答える