0

こんにちは、この github ページに従って MFSideMenu を追加し、次のエラーを表示しました。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MFSideMenuContainerViewController", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

これは私のAppDelegateです

- (ViewController *)demoController {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    ViewController *main = (ViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"home"];

    return  main;
}

- (UINavigationController *)navigationController {
    return [[UINavigationController alloc]
            initWithRootViewController:[self demoController]];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    leftMenuController *leftMenuViewController = [[leftMenuController alloc] init];

    MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                    containerWithCenterViewController:[self navigationController]
                                                    leftMenuViewController:leftMenuViewController
                                                    rightMenuViewController:nil];
    self.window.rootViewController = container;
    [self.window makeKeyAndVisible];
    return YES;
}

ここに画像の説明を入力

4

2 に答える 2

0

このコードを AppDelegate.m で使用すると、ストーリーボードで機能します。

- (ViewController *)demoController {
    return [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
}

- (UINavigationController *)navigationController {
    return [[UINavigationController alloc]
            initWithRootViewController:[self demoController]];
}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;
    UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"];
    UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"];
     UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"second" bundle:[NSBundle mainBundle]];
    UIViewController *left = [storyboard1 instantiateViewControllerWithIdentifier:@"rightSideMenuViewController"];

    [container setLeftMenuViewController:leftSideMenuViewController];
    [container setLeftMenuViewController:left];
    [container setCenterViewController:navigationController];

    // Override point for customization after application launch.
    return YES;
}

また、ストーリーボードで新しいビュー コントローラーを取得し、それを初期ビュー コントローラーとしてマークし、そのクラス名とストーリーボード ID を MFSideMenuContainerViewController として指定します。

于 2016-08-22T10:18:15.690 に答える
0

一般に、これは BoxView のコードがターゲットに正しくコンパイルされていない場合に発生します。

ここに画像の説明を入力

ビルドしているターゲットで、 MFSideMenuContainerViewController.m実装ファイルの対応するボックスがオンになっていることを確認する必要があります。

「クリーン アンド ビルド」も問題ありません。

于 2016-08-22T10:25:51.127 に答える