菜鸟教程小白 发表于 2022-12-12 15:05:08

ios - 为什么我的 UIAlertActions 在 iPad Air 上变为零


                                            <p><p>我正在开发一个最初为 iOS 6 编写的旧 iOS 应用程序,它有一些需要更改的 UIActionSheets,所以我一直在努力将它们移到 UIAlertControllers,使用 UIAlertActions。这在 iPad2 模拟器上运行得非常好,但是在 iPad Air(我可以访问的唯一 iPad)上测试时,我的 UIAlertAction 和 UIAlertController 在创建后直接变为 nil(在调试器中查看,它在创建时收到一个指针,但是一旦它执行下一行,它就会变为空)。这是一个代码示例:</p>

<pre><code>//When hovering over the next line, alert has a pointer
UIAlertController* alert = [UIAlertController
                           alertControllerWithTitle:@&#34;info&#34;
                           message:@&#34;testmessage&#34;
                           preferredStyle:UIAlertControllerStyleActionSheet];
//alert pointer is now nil
//test pointer shows up
UIAlertAction* test= [UIAlertAction
                        actionWithTitle:@&#34;I&#39;m a Button&#34;
                        style:UIAlertActionStyleDefault
                        handler:^(UIAlertAction * action){
                        ;
                        }
                      ];
//test pointer is nil, test2 pointer exists
UIAlertAction* test2 = [UIAlertAction
                        actionWithTitle:@&#34;I&#39;m a Button&#34;
                        style:UIAlertActionStyleDefault
                        handler:^(UIAlertAction * action){
                        ;
                        }
                      ];
//test2 pointer is nil
;
; //app crashes, because I&#39;m trying to present a nil modal.
</code></pre>

<p>任何想法或帮助将不胜感激!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>UIAlertController 适用于 iOS8 以上。在 iOS8 之前使用 UIAlertView 和 UIActionSheet</p>

<p>您最好检查您的设备是否响应类(class),</p>

<pre><code>if () {
   // use UIAlertController for the action sheets as you have already posted

//    For all operating systems (like iOS8 upwards) will land in here.

} else {
// use UIActionSheet - like you already used for iOS6

}
</code></pre>

<p>检查操作系统部署编号是不明智的,例如 if 8.0 等,检查它是否响应类是正确的方法。</p>

<p>它可以防止崩溃意味着您不依赖 float ,这些 float 不能保证是可靠的,如果它们改变了将来操作系统命名的方式,您的代码就会崩溃。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么我的 UIAlertActions 在 iPad Air 上变为零,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29684018/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29684018/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么我的 UIAlertActions 在 iPad Air 上变为零