iOS8推出了几个新的“controller”
来源:互联网 发布:舒克软件 编辑:程序博客网 时间:2024/05/12 01:13
iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
(2014-11-13 17:29:42)转载▼
标签:
it
ios开发
分类: IOS开转:http://blog.csdn.net/liangliang103377/article/details/40078015
iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了~但是也无所谓,有新东西不怕,学会使用了就行。接下来会探讨一下这些个新的Controller。
- (void)showOkayCancelAlert { NSString *title = NSLocalizedString(@"A Short Title Is Best", nil); NSString *message = NSLocalizedString(@"A message should be a short, complete sentence.", nil); NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil); NSString *otherButtonTitle = NSLocalizedString(@"OK", nil); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAl ert]; // Create the actions. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { NSLog(@"The \"Okay/Cancel\" alert's cancel action occured."); }]; UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefaul t handler:^(UIAlertAction *action) { NSLog(@"The \"Okay/Cancel\" alert's other action occured."); }]; // Add the actions. [alertController addAction:cancelAction]; [alertController addAction:otherAction]; [self presentViewController:alertController animated:YES completion:nil];}
这是最普通的一个alertcontroller,一个取消按钮,一个确定按钮。
新的alertcontroller,其初始化方法也不一样了,按钮响应方法绑定使用了block方式,有利有弊。需要注意的是不要因为block导致了引用循环,记得使用__weak,尤其是使用到self。
上面的界面如下:
如果UIAlertAction *otherAction这种otherAction多几个的话,它会自动排列成如下:
另外,很多时候,我们需要在alertcontroller中添加一个输入框,例如输入密码:
这时候可以添加如下代码:
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { // 可以在这里对textfield进行定制,例如改变背景色 textField.backgroundColor = [UIColor orangeColor]; }];
而改变背景色会这样:
完整的密码输入:
- (void)showSecureTextEntryAlert{ NSString *title = NSLocalizedString(@"A Short Title Is Best", nil); NSString *message = NSLocalizedString(@"A message should be a short, complete sentence.", nil); NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil); NSString *otherButtonTitle = NSLocalizedString(@"OK", nil); UIAlertController *alertController = [UIAlertController alertControllerWithTitle :title message:message preferredStyle:UIAlertControllerStyleAl ert]; // Add the text field for the secure text entry. [alertController addTextFieldWithConfigur ationHandler:^(UITextField *textField) { // Listen for changes to the text field's text so that we can toggle the current // action's enabled property based on whether the user has entered a sufficiently // secure entry. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidCh angeNotification:) name:UITextFieldTextDidChange Notification object:textField]; textField.secureTextEntry = YES; }]; // Create the actions. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { NSLog(@"The \"Secure Text Entry\" alert's cancel action occured."); // Stop listening for text changed notifications. [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChange Notification object:alertController.textFields.firstObject]; }]; UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefaul t handler:^(UIAlertAction *action) { NSLog(@"The \"Secure Text Entry\" alert's other action occured."); // Stop listening for text changed notifications. [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChange Notification object:alertController.textFields.firstObject]; }]; // The text field initially has no text in the text field, so we'll disable it. otherAction.enabled = NO; // Hold onto the secure text alert action to toggle the enabled/disabled state when the text changed. self.secureTextAlertAction = otherAction; // Add the actions. [alertController addAction:cancelAction]; [alertController addAction:otherAction]; [self presentViewController:alertController animated:YES completion:nil];}
注意四点:
1.添加通知,监听textfield内容的改变:
// Add the text field for the secure text entry. [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { // Listen for changes to the text field's text so that we can toggle the current // action's enabled property based on whether the user has entered a sufficiently // secure entry. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidCh angeNotification:) name:UITextFieldTextDidChange Notification object:textField]; textField.secureTextEntry = YES; }];
2.初始化时候,禁用“ok”按钮:
otherAction.enabled = NO;
self.secureTextAlertAction = otherAction;//定义一个全局变量来存储
3.当输入超过5个字符时候,使self.secureTextAlertAction = YES:
- (void)handleTextFieldTextDidChangeNotification:(NSNotification *)notification { UITextField *textField = notification.object; // Enforce a minimum length of >= 5 characters for secure text alerts. self.secureTextAlertAction.enabled = textField.text.length >= 5;}
4.在“OK”action中去掉通知:
UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSLog(@"The \"Secure Text Entry\" alert's other action occured."); // Stop listening for text changed notifications. [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChange Notification object:alertController.textFields.firstObject]; }];
最后是以前经常是alertview与actionsheet结合使用,这里同样也有:
- (void)showOkayCancelActionSheet { NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil); NSString *destructiveButtonTitle = NSLocalizedString(@"OK", nil); UIAlertController *alertController = [UIAlertController alertControllerWithTitle :nil message:nil preferredStyle:UIAlertControllerStyleAc tionSheet]; // Create the actions. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { NSLog(@"The \"Okay/Cancel\" alert action sheet's cancel action occured."); }]; UIAlertAction *destructiveAction = [UIAlertAction actionWithTitle:destructiveButtonTitle style:UIAlertActionStyleDestru ctive handler:^(UIAlertAction *action) { NSLog(@"The \"Okay/Cancel\" alert action sheet's destructive action occured."); }]; // Add the actions. [alertController addAction:cancelAction]; [alertController addAction:destructiveAction]; [self presentViewController:alertController animated:YES completion:nil];}
在底部显示如下:
好了,至此,基本就知道这个新的controller到底是怎样使用了
0 0
- iOS8推出了几个新的“controller”
- iOS8中 UIAlertController 的新使用
- ios8 新的AlertView
- iOS8的新特性
- controller的几个实例
- ios8---苹果的新时代
- 简述iOS8的新特性
- iOS8 Xcode6的新特性
- iOS7、iOS8的新特性
- PalmSource推出了新的基于Linux的Palm OS(小E有出头之日了)
- ARKit 又推出新的demo了,这次是家具行业的福音
- net4.0平台,微软才推出了新的自旋锁SpinLock
- WCP 新版本中多了几个新的导出函数
- 学习了几个新的(多向)OLL手法
- WWDC2014之iOS8的新特性预览
- 列举下iOS8的新特性
- Xcode6 ios8的定位新特性
- UINavigationController详解---含iOS8新的API
- Linux C 深入分析结构体指针的定义与引用
- 【HTML 未完】tabindex 属性
- 解决MySQL显示中文的问题
- 函数的调用
- JavaScript当中网页刷新后数值(text、radio、checkbox、select、textarea)保持不变(输入域数据保持)的简单方法
- iOS8推出了几个新的“controller”
- iOS 中正则表达式的一些语法应用
- 感受
- hybrid app
- 路由的距离向量算法等(也不知道该起什么名字好)
- windows TCP socket在C++下的编程入门 7
- setValuesForKeysWithDictionary 和 setValue:forKey 和setValue:forUndefinedKey之间的关系
- HDU 1443 Joseph 约瑟夫环 暴力
- Objective-C_语言_类目