【问题标题】:UIMenuController doesn't show in a second UIViewControllerUIMenuController 不显示在第二个 UIViewController
【发布时间】:2013-01-08 19:11:42
【问题描述】:

我有两个 UIViewController,一个是主要的,通过这个按钮你可以转到第二个。在 SecondView.m 我有以下代码:

    - (IBAction)showpopup:(id)sender {
    [self becomeFirstResponder];
    UIMenuController *sharedController = [UIMenuController sharedMenuController];
    UIMenuItem *x2 = [[UIMenuItem alloc] initWithTitle:@"2x2" action: @selector(mat)];
    UIMenuItem *x3 = [[UIMenuItem alloc] initWithTitle:@"3x3" action: @selector(mat)];
    UIMenuItem *x4 = [[UIMenuItem alloc] initWithTitle:@"4x4" action: @selector(mat)];
    UIMenuItem *x5 = [[UIMenuItem alloc] initWithTitle:@"5x5" action: @selector(mat)];

    NSArray *menuArray = [NSArray arrayWithObjects: x2,x3,x4,x5, nil];


    CGRect drawRect = [sender convertRect:[sender bounds] toView: self.view];
    [sharedController setTargetRect:drawRect inView: self.view];

    [sharedController setMenuItems:menuArray];
    [sharedController setMenuVisible:YES animated:YES];
    [sharedController setMenuItems: nil];
}

-(BOOL)canBecomeFirstResponder{
    return YES;
}

-(int)mat:(id)sender{
    return 0;
}

按钮被链接为“内部修饰”,但是当我运行 UIMenuController 时没有显示出来。 完全相同的代码在主 UIViewController 中工作。

谢谢

【问题讨论】:

    标签: iphone objective-c ios uiviewcontroller uimenucontroller


    【解决方案1】:

    如果我没有遗漏任何东西,我认为您应该,例如,将您的 sharedController.view 作为子视图添加到您的 mainController.view,例如(假设在你的主控制器中定义了`showpopup):

    - (IBAction)showpopup:(id)sender {
        [self becomeFirstResponder];
        UIMenuController *sharedController = [UIMenuController sharedMenuController];
        ...
        [sharedController setMenuItems:menuArray];
        [sharedController setMenuVisible:YES animated:YES];
        [sharedController setMenuItems: nil];
        [self.view addSubview:sharedController.view];
    }
    

    或者您可以模态显示您的 sharedController(替换上面的 addSubview 行):

    [self presentViewController:sharedController animated:YES completion:nil];
    

    无论如何,在我看来,“呈现”位丢失了。

    【讨论】:

    • 这是我在编辑之前所做的,我认为我错了,因为我收到了这个错误d.pr/i/34wz
    • 你完全正确,对不起。我的建议都不适用。可能是因为您使用 `[sharedController setMenuItems: nil];` 重置菜单而没有出现菜单吗?尝试删除该行...
    • 如何显示第一个控制器的第二个控制器?它在导航控制器中吗?标签栏控制器?用它的观点做addSubview
    • 我通过调用“segue”的 UIButton 显示它,然后出现第二个视图
    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2018-10-03
    • 2019-04-11
    相关资源
    最近更新 更多