文档章节

UIAlertController简单使用

黑伞将军
 黑伞将军
发布于 2015/08/18 08:30
字数 488
阅读 2097
收藏 1

一晚上的研究成果……

之前只使用AppDelegate.m,视图控制器的创建和操作都是在其中完成的,一直报错:

Warning: Attempt to present <UIAlertController: 0x7fa73b586b40> on <AppDelegate: 0x7fa73b71f960> whose view is not in the window hierarchy!

新建类ViewController后,在其中创建视图对象即可。


本段代码实现功能为:点击登陆按钮,对TextField文本框内容验证,验证通过则显示登录成功,否则,登录失败。当点击确定或取消后,关闭键盘。


文件结构、代码如下:


ViewController.h

@interface ViewController : UIViewController<UITextFieldDelegate>

@property (nonatomic, strong) UITextField * userField;
@property (nonatomic, strong) UITextField * passField;


@end


ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    UILabel * lUser = [[UILabel alloc] initWithFrame:CGRectMake(50, 40, 100, 30)];
    UILabel * lPass = [[UILabel alloc] initWithFrame:CGRectMake(50, 90, 100, 30)];
    lUser.text = @"用户名:";
    lPass.text = @"密  码:";
    [self.view addSubview:lUser];
    [lUser release];
    [self.view addSubview:lPass];
    [lPass release];
    
    UITextField * tUser = [[UITextField alloc] initWithFrame:CGRectMake(150, 40, 150, 30)];
    tUser.placeholder = @"请输入用户名";
    tUser.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:tUser];
    [tUser release];
    
    UITextField * tPass = [[UITextField alloc] initWithFrame:CGRectMake(150, 90, 150, 30)];
    tPass.secureTextEntry = YES;
    tPass.placeholder = @"请输入密码";
    tPass.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:tPass];
    [tPass release];
    
    UIButton * loginButton = [UIButton buttonWithType:UIButtonTypeSystem];
    [loginButton setTitle:@"登陆" forState:UIControlStateNormal];
    loginButton.frame = CGRectMake(50, 150, 100, 40);
    [loginButton addTarget:self action:@selector(loginClick) forControlEvents:UIControlEventTouchUpInside];
    loginButton.titleLabel.font = [UIFont systemFontOfSize:18];
    [loginButton addTarget:self action:@selector(loginClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:loginButton];
    
    UIButton * registButton = [UIButton buttonWithType:UIButtonTypeSystem];
    [registButton setTitle:@"注册" forState:UIControlStateNormal];
    registButton.frame = CGRectMake(150, 150, 100, 40);
    registButton.titleLabel.font = [UIFont systemFontOfSize:18];
    [self.view addSubview:registButton];
    
    tUser.delegate = self;
    tPass.delegate = self;
    
    self.userField = tUser;
    self.passField = tPass;
    
    // Do any additional setup after loading the view.
}

- (void)loginClick
{
    
    NSString * loginMessage = @"登录失败";
    
    UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"登录信息" message:loginMessage preferredStyle:UIAlertControllerStyleAlert];
    
    if ([self.userField.text isEqualToString:@"123"]) {
        if ([self.passField.text isEqualToString:@"123"]) {
            loginMessage = @"登录成功";
        }
    }
    alert.message = loginMessage;
    UIAlertAction * ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        [self.view endEditing:YES];
    }];
    
    UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        [self.view endEditing:YES];
    }];
    
    [alert addAction:ok];
    [alert addAction:cancel];
    
    [self presentViewController:alert animated:YES completion:nil];
    
}

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    
    ViewController * viewController = [[ViewController alloc] init];
    
    self.window.rootViewController = viewController;
    
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}


© 著作权归作者所有

黑伞将军
粉丝 1
博文 33
码字总数 34553
作品 0
张家口
程序员
私信 提问
IOS基础UI之(五)UIAlertView、UIActionSheet和UIAlertContro

IOS基础UI之(五)UIAlertView、UIActionSheet和UIAlertController详解 标签: iosUIAlertViewUIActionSheetUIAlertController 2015-09-20 11:58 340人阅读 评论(3) 收藏 举报 分类: IOS(UI基......

Bob_Zheng
2015/11/26
41
0
类似 iOS alertView 弹窗组件--HDAlertView

HDAlertView是一个类似系统alertView弹窗。 系统自带UIAlertView有常见BUG, 比如和系统键盘动画冲突等等, 需要代理操作等诸多不方便使用.使用UIAlertController就不会有UIAlertView等等问题,...

小柒七
2016/09/01
368
0
iOS9使用提示框的正确实现方式

在从iOS8到iOS9的升级过程中,弹出提示框的方式有了很大的改变,在Xcode7 ,iOS9.0的SDK中,已经明确提示不再推荐使用UIAlertView,而只能使用UIAlertController,我们通过代码来演示一下。 ...

海二少
2016/03/10
23
1
iOS8统一的系统提示控件——UIAlertController

iOS8统一的系统提示控件——UIAlertController 一、引言 相信在iOS开发中,大家对UIAlertView和UIActionSheet一定不陌生,这两个控件在UI设计中发挥了很大的作用。然而如果你用过,你会发现这...

珲少
2015/10/17
5.4K
2
[Swift]UIKit学习之警告框:UIAlertController和UIAlertView

Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated.) To create and manage alerts in iOS 8 and later, instead use UIAlertController ......

王永濤
2015/10/21
630
0

没有更多内容

加载失败,请刷新页面

加载更多

Hive(五)——Sqoop导入导出数据

一、

ittzg
30分钟前
2
0
抽象同步队列AQS——AbstractQueuedSynchronizer锁详解

AQS——锁的底层支持 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资...

须臾之余
今天
2
0
springboot配置百度UEditor 富文本详解

富文本简介 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 准备工作 ueditor需要单独文...

wotrd
昨天
3
0
mysql 5.7之my.cnf配置大全

[client]port = 3306socket = /tmp/mysql.sock[mysqld]###############################基础设置######################################Mysql服务的唯一编号 每个mysql服务...

Online_Reus
昨天
2
0
MAVEN打包时引入外部链接的包

1.项目引入了ORACLE的jar包,MAVEN配置如下 2.打jar包的时候需要指定下main入口函数mainClass <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> ......

Cobbage
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部