1. 程式人生 > >iOS-提示框的正確實現方式(iOS9)

iOS-提示框的正確實現方式(iOS9)

我通過點選一個按鈕,然後彈出提示框,程式碼示例如下:

<span style="font-size:14px;">#import "ViewController.h"

@interface ViewController ()

@property(strong,nonatomic) UIButton *button;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  self.button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [[UIScreen mainScreen] bounds].size.width, 20)];
  [self.button setTitle:@"跳轉" forState:UIControlStateNormal];
  [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  [self.view addSubview:self.button];
  
  [self.button addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside];
  
}

-(void)clickMe:(id)sender{
  
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"按鈕被點選了" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
    [alert show];
  
}

@end</span>

編寫上述程式碼時,會有下列的警告提示:

“‘UIAlertView’ is deprecated:first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead”.

說明UIAlertView首先在iOS9中被棄用(不推薦)使用。讓我們去用UIAlertController。但是執行程式,發現程式碼還是可以成功執行,不會出現crash。

     但是在實際的工程開發中,我們有這樣一個“潛規則”:要把每一個警告(warning)當做錯誤(error)。所以為了順應蘋果的潮流,我們來解決這個warning,使用UIAlertController來解決這個問題。程式碼如下:

<span style="font-size:14px;">#import "ViewController.h"

@interface ViewController ()

@property(strong,nonatomic) UIButton *button;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  self.button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [[UIScreen mainScreen] bounds].size.width, 20)];
  [self.button setTitle:@"跳轉" forState:UIControlStateNormal];
  [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  [self.view addSubview:self.button];
  
  [self.button addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside];
  
}

-(void)clickMe:(id)sender{
  
  //初始化提示框;
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"按鈕被點選了" preferredStyle:  UIAlertControllerStyleAlert];
  
  [alert addAction:[UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    //點選按鈕的響應事件;
  }]];
  
  //彈出提示框;
  [self presentViewController:alert animated:true completion:nil];
  
  
}



@end</span>

這樣,程式碼就不會有警告了。

程式執行後的效果同上。  其中preferredStyle這個引數還有另一個選擇:UIAlertControllerStyleActionSheet。選擇這個列舉型別後,實現效果如下:

發現這個提示框是從底部彈出的。是不是很簡單呢?通過檢視程式碼還可以發現,在提示框中的按鈕響應不再需要delegate委託來實現了。直接使用addAction就可以在一個block中實現按鈕點選,非常方便。

     總結,可以發現這裡我們呈現一個對話方塊使用了presentViewController這個方法,這個方法是呈現模態檢視(Modal View)的方法,也就是是說,此時的提示框是一個模態檢視。當我們在進行介面跳轉的時候,也一般使用這個方法,此時呈現的第二個ViewController也是一個模態檢視。我們可以把模態檢視理解為一個浮動在原先檢視上的一個臨時性的檢視或者介面,當在模態檢視中呼叫dismissViewController方法時,會返回上一個介面,並銷燬這個模態檢視物件。

相關推薦

iOS-提示正確實現方式(iOS9)

我通過點選一個按鈕,然後彈出提示框,程式碼示例如下: <span style="font-size:14px;">#import "ViewController.h" @interface ViewController () @property(strong,nonatomic) UIB

android 底部彈出提示實現方式

1.android實現底部彈框的兩種實現方式: (1) 使用系統自帶對話方塊AlertDialog 實現 (2)自定義對話方塊實現  1.1使用系統自帶對話方塊AlertDialog 實現 public class MainActivity extends AppCo

iOS9使用提示正確實現方式(UIAlertView is deprecated)

前言 在從iOS8到iOS9的升級過程中,彈出提示框的方式有了很大的改變,在Xcode7 ,iOS9.0的SDK中,已經明確提示不再推薦使用UIAlertView,而只能使用UIAlertController,我們通過程式碼來演示一下。 我通過點選一個按鈕,然後彈出提示框,程式碼示例如下: #impor

iOS9使用提示進行文字輸入的正確實現方式

     我在之前寫過一篇部落格《iOS9使用提示框的正確實現方式》,主要講了如何使用UIAlertController替換UIAlertView進行提示框的實現。今天我們將會來實現一下在提示框中如何

iOS中自動消失提示實現

在實際的應用中,我們常會看到一些應用中當觸發某個事件時,會彈出一個提示框,然後自動消失的效果,其實這種效果的實現是比較簡單的,下面我介紹兩種簡單的方法: 1. 使用UIAlertView來實現,思路是給UIAlertView設定一個延遲時間,然後讓其消失(相當於點選了“取消

Redis分布式鎖的正確實現方式

想要 argv 只有一個 AD redis單機 lease 兩條命令 bject 支持 前言 分布式鎖一般有三種實現方式:1. 數據庫樂觀鎖;2. 基於Redis的分布式鎖;3. 基於ZooKeeper的分布式鎖。本篇博客將介紹第二種方式,基於Redis實現分布式鎖。雖

Redis 分布式鎖的正確實現方式

單機 滿足 AR 執行 發現 命令 dom 為什麽 tdi 前言 分布式鎖一般有三種實現方式:1. 數據庫樂觀鎖;2. 基於Redis的分布式鎖;3. 基於ZooKeeper的分布式鎖。本篇博客將介紹第二種方式,基於Redis實現分布式鎖。 可靠性 首先,為了確保分布式

Redis 分布式鎖的正確實現方式( Java 版 )

想要 uda 就是 tex implement 代碼實現 key eval() attach 前言 分布式鎖一般有三種實現方式:1. 數據庫樂觀鎖;2. 基於Redis的分布式鎖;3. 基於ZooKeeper的分布式鎖。本篇博客將介紹第二種方式,基於Redis實現分布式鎖。

pyqt5 主界面打開新主界面、打開Dialog、打開提示實現模板

重寫 demo 分享圖片 == def 頂部 expand event times 1 import sys 2 from PyQt5.QtWidgets import * 3 from PyQt5.QtCore import * 4 from PyQt5

redis-分散式鎖的正確實現方式

分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題,為了避免誤人子弟,本篇部落格將詳細

Java排行榜中多級排序的一種正確實現方式

需求:1,外層根據參與人數排序,並據此分頁             2,內層首先根據級別排序,級別相同時,按照票數排序,固定展示8條 實現基礎:ArrayList 可能的坑:僅僅對最外層list執行一次排序呼叫,此時,無法確

redis - 分散式鎖的正確實現方式2

分散式應用進行邏輯處理時經常會遇到併發問題。 比如一個操作要修改使用者的狀態,修改狀態需要先讀出使用者的狀態,在記憶體裡進行修改,改完了再存回去。如果這樣的操作同時進行了,就會出現併發問題,因為讀取和儲存狀態這兩個操作不是原子的。(Wiki 解釋:所謂原子操作是指不會被執行緒排程機制打斷的操作;

redis - 分散式鎖的正確實現方式

前言 分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題,為了避免誤人子弟,本篇部

redis 分散式鎖的正確實現方式

前言 分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各

Redis 分散式鎖的正確實現方式( Java 版 )

前言 分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題,為

Redis分散式鎖的正確實現方式

前言 分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題,為

快來學Redis | Redis分散式鎖的正確實現方式

一、前言 分散式鎖一般有以下三種實現方式: 資料庫樂觀鎖; 基於Redis的分散式鎖; 基於ZooKeeper的分散式鎖。 本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現

Redis分散式鎖的正確實現方式(Java版)

前言 分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題

iOS Swizzle的正確使用方式(原文翻譯)

通常在執行時,Swizzle是通過用一個方法的實現來替換另一個方法的實現來運作的。運用Swizzle可能是因為不同的需求:重寫預設方法,甚至是動態的方法載入。我曾經看到很多發出來的部落格上討論Swizzle,他們很多都提供了一些相當不好的用法。這些用法在你獨自寫專案的

Redis分散式鎖的正確實現方式(Java版)

分散式鎖一般有三種實現方式:1. 資料庫樂觀鎖;2. 基於Redis的分散式鎖;3. 基於ZooKeeper的分散式鎖。本篇部落格將介紹第二種方式,基於Redis實現分散式鎖。雖然網上已經有各種介紹Redis分散式鎖實現的部落格,然而他們的實現卻有著各種各樣的問題,為了避免誤人子弟,本篇部落格將詳細介紹如