zoukankan      html  css  js  c++  java
  • 【转】UIAlertView使用小结

    转自:http://blog.sina.com.cn/s/blog_6647b3b601015u9o.html

    参考:http://www.cnblogs.com/xinye/archive/2012/12/23/2830156.html

    先甩两个iOS Developer Library的链接,放眼一看就知道这个东东内容灰常少,它的特点就是易学易用,可作为初学入门练习。搞懂以后慢慢学定制界面、增加功能,即使自己不重写也能看懂大神们写的SDK,挪为己用。
            基本使用流程是这样的: 初始化一个UIAlertView
     ——进一步设置——显示和释放。“标准语句”↓

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Your Message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    images
         在初始化和show以后对这个UIAlertView不满的话还能用 
    Setting Properties和Configuring Buttons里的方法对它进行修改,当然readonly就没办法了。所以一般情况都是初始化时就完全搞定,本来就这么小个东东,改来改去会显得程序员同志意志不坚定的!
            alertViewStyle这个属性在iOS5.0以后才有,想加输入框又要考虑用户系统版本的不妨去新浪微博官方SDK里面看下它的输入用户名和密码的alterView,反正做中文app的同学基本上都会搞微博分享吧!
    behind_alert_view1
           有时候,[alert show]后屏幕会变得好像被lomo化了似地,这个alter就像便秘的大便,很久都不弹出来。那是因为调用的时候没有在主线程,解决方法是看情况使用
    [alert performSelectorOnMainThread:@selector(show)
                            withObject:nil
                         waitUntilDone:YES];

    dispatch_async(dispatch_get_main_queue(), ^{ });

        若想让它自行退散就用这个[alert dismissWithClickedButtonIndex:0 animated:YES];
    顺便介绍一个简单的
    等待提示界面,看完本篇再点开看它,然后可以研究一下简单的定制界面,然后就应该会用简洁的MBProgressHUD了,我喜欢,你们也会喜欢的~

           通常我们会在用户按下按钮后再做点什么,所以就要用到它的delegate。 它的delegate是谁,谁就要在头文件里加上“UIAlertViewDelegate”。哦,不加也能用,就是Xcode会给你黄色的warning,虽然程序员只care error,不过洁癖点好,加上以后输入和
    UIAlertViewDelegate有关的东西会有提示。
           大部分情况它的delegate是self吧,几个UIController之间传来传去好乱的~还要记得给它加个tag,免得多个alert在一个controller里面也会乱的。
           把任务列一下一一讲来:
    Responding to Actions
    • – alertView:clickedButtonAtIndex:

    Customizing Behavior
    • – alertViewShouldEnableFirstOtherButton:
    • – willPresentAlertView:
    • – didPresentAlertView:
    • – alertView:willDismissWithButtonIndex:
    • – alertView:didDismissWithButtonIndex:

    Canceling
    • – alertViewCancel:

           用得最多的就是第一条,用户按下按钮后首先进入它,判断完是哪个View的哪个Button后就可以处理想要处理的任务,常用码如下:

    - (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex 
    {

        switch(alertView.tag) 
        {
            case 1:         
                if (buttonIndex != [alert cancelButtonIndex]) //默认cancelButtonIndex = 0,每个按钮index可设
                {
                    ;//时间花费短的任务
                }
                break;
            default:
                break;
        }

    }

           不要以为它是万能的,它只适用于处理时长较短任务的情况。因为按钮被按下后这个alterView就会消失,任务的时间长会让它继续悬在屏幕中,等任务完成了才消失。在用户看来就是死机的样子。
           不想用[self performSelector:@selector(someMethod) withObject:nil afterDelay:x.xx]来取巧的话,– alertView:didDismissWithButtonIndex:就派上用场了,它是在alterView消失之后再进入。怎么用?把上面那个的内容拷过来就可以了。两者结合更完美。

    - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
    {
        switch(alertView.tag) 
        {
            case 1:         
                if (buttonIndex != [alert cancelButtonIndex]) //默认cancelButtonIndex = 0,每个按钮index可设
                {
                    ;//时间花费长的任务
                }
                break;
            default:
                break;
        }

    }

           上面讲到弹不出来,即使在主线程也有可能弹得不流畅——被之后的任务影响了嘛。将之后的任务来个delay是可以解决,但时间不太好掌握,我试了一下0.35秒以上可以。有了delegate之后还有个解决方案就是用– didPresentAlertView:把要做的任务放在里面,意思就是等爷完全展示在你面前再玩别的。嗯,willPresent和didPresent还能修改它的界面,这就是进阶用法了,到了那个阶段估计最原始的alertView都用不着了吧!
           我目前在CamDiary图片日记里就用到这个阶段,其它的还没研究,总有用处吧,不然苹果写出来干嘛捏?千万不要鄙视它们,它们是用起来最简单最安全最苹果的。
           学完它,可以继续学习从屏幕下方立起来的UIActionSheet,差不多啦~

  • 相关阅读:
    20191208浙江自然博物馆寒武纪迸发专题展
    Spring Crest-英特尔出品的神经网络训练场景加速卡
    20191203动物园玉皇山凤凰山南宋皇城遗址凤凰山玉皇山动物园
    博观而约取-观展攻略
    20191130周六浙江美术馆纤维艺术特展
    git clone下载速度很慢的解决方法
    Jupyter notebook使用技巧积累
    (转)Python--matplotlib绘图可视化知识点整理
    Pygame一些不错教程平时收集....
    pygame.Surface.get_at
  • 原文地址:https://www.cnblogs.com/ygm900/p/2875784.html
Copyright © 2011-2022 走看看