You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Xamarin.iOS中Alert按钮显示异常,OK按钮未出现,求代码修改方案

问题分析与解决方案

嘿,我来帮你搞定这个Alert按钮的问题~你的这段代码确实无法实现带OK按钮的Alert,问题出在对UIAlertController的使用方式上,下面给你详细拆解原因和修改方案:

问题根源

你错误地手动创建了UIButton来尝试添加按钮,但UIAlertController有自己的按钮添加机制——通过UIAlertAction来定义按钮,而且你创建的okayButton根本没有被添加到任何视图层级中,自然不会显示;另外你把添加Cancel动作的逻辑放在了这个无效按钮的点击事件里,完全不符合Alert的工作逻辑。

需要修改的内容

  • 移除所有手动创建UIButton的代码(包括它的点击事件逻辑)
  • 直接使用UIAlertController.AddAction()方法添加OK按钮(以及你需要的其他按钮)
  • 按钮的点击逻辑直接绑定在UIAlertAction的回调中

修改后的完整代码

public void Alert(List<string> listToAlert, string heading) {
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < listToAlert.Count; i++) {
        stringBuilder.Append(listToAlert[i]);
        stringBuilder.Append("\r\n");
    }

    // 创建AlertController
    var okAlertController = UIAlertController.Create(heading, stringBuilder.ToString(), UIAlertControllerStyle.Alert);

    // 添加OK按钮(默认样式,点击后会自动关闭Alert)
    okAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, (action) => {
        // 这里写OK按钮被点击后的逻辑
        // 比如做一些后续处理
    }));

    // 如果需要Cancel按钮,可以再加一个
    okAlertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));

    // 弹出Alert
    _rootVC.PresentViewController(okAlertController, true, null);
}

补充说明

  • UIAlertActionStyle.Default:用于主要操作按钮(比如OK),样式是高亮的
  • UIAlertActionStyle.Cancel:用于取消操作,通常会放在Alert的右侧(iOS的默认布局)
  • 按钮的回调参数(action)可以让你在点击后获取该动作的信息,不需要的话可以传null

内容的提问来源于stack exchange,提问作者Mark Wardell

火山引擎 最新活动