`

UIAlertView

 
阅读更多

参考了这篇帖子:UIAlertView的API介绍

今天开始做IOS的UI部分,从最简单的UIAlertView开始学习

-(void) listenBackupStartEvent:(NSNotification*) notification
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"确认备份?" delegate:backupViewDelegate cancelButtonTitle:@"取消" otherButtonTitles:@"确定",nil];
    alert.tag = 0;
    [alert show];
}

上面的代码在运行时创建一个UIAlertView,其他的UI控件也可以采用类似的方式添加到View里,不依赖Storyboard。这里我把delegate设为另一个对象,而不是当前的ViewController,因为我不希望ViewController太庞大。不过这种方式,当delegate需要调用view controller里的方法或实例变量的时候,会比较麻烦点

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if(alertView.tag == 0){
        switch (buttonIndex) {
            case 0:{
                break;// cancel button, nothing to do
            }
            case 1:{
                [viewController.backupDelegate performSelectorInBackground:@selector(doBackup) withObject:nil];
                break;
            }
            default:
                break;
        }
        return;
    }
}

这个是delegate的方法,实现了UIAlertViewDelegate协议,不过目前只实现了其中的一个方法。第一个参数是当前的UIAlertView,通过tag来标识。所以如果多个UIAlertView共享一个delegate的话,就会有多个if块

第二个参数是当前被点击的button index,根据这个值来判断是哪个按钮被按下,索引从0开始

当然,delegate的方法都是跑在UI Thread里的,所以要小心block主线程

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics