ios - UIAlertView Action 没有 swift 发生

标签 ios swift uialertview

我的应用程序中有一个登录页面。用户输入他们的用户名和密码。我有一个 API 可以告诉我用户名和密码是否正确,如果正确则告诉我用户 ID。如果它们不正确,它会显示一个 UIAlertView(),询问您是否要创建一个帐户。该 View 有两个按钮。关闭 View 的“否”按钮和应该联系 API 以创建用户帐户的"is"按钮。我之前已经创建了警报操作,但它不适用于我下面的代码。如果您不介意,能否请您看一下并帮我诊断问题?

//
//  File.swift
//  Reading Logs
//
//  Created by Andrew on 12/8/15.
//  Copyright © 2015 Wilson Apps for Education. All rights reserved.
//

import UIKit

class UserLogin {

var loginAlert = UIAlertView()
    var user: String = ""
    var pass: String = ""

    func checkLogin() -> Bool{
    let defaults = NSUserDefaults.standardUserDefaults()
    let stat = defaults.valueForKey("loggedIn")
    if(String(stat!) == "0"){
        return false
    }else{
        return true
    }
}


    func logout(){
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setValue("0", forKey: "loggedIn")
        defaults.setValue("", forKey: "logKey")
        defaults.setValue("0", forKey: "userKey")
    }

    func login(username username: String, password: String, completion: (result: String) -> Void){
        self.user = username
        self.pass = password
        let url = "http://www.wilsonfamily5.org/rlog/checkLogin.php?u=\(username)&p=\(password)"
        let nsUrl = NSURL(string:url)
        let nsUrlRequest = NSURLRequest(URL: nsUrl!)
        NSURLSession.sharedSession().dataTaskWithRequest(nsUrlRequest){
            (data, response, error) in
            guard
                let data = data,
                let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
                else { return }
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if(contents as String == "0"){
                    self.loginAlert = UIAlertView(title: "No Account Found", message: "We did not find an account matching that criterea. Do you want us to create you an account?", delegate:nil, cancelButtonTitle: "No")
                    self.loginAlert.addButtonWithTitle("Yes")
                    self.loginAlert.show()
                }else{
                    let defaults = NSUserDefaults.standardUserDefaults()
                    defaults.setValue(contents as String, forKey: "userKey")
                    defaults.setValue("1", forKey: "loggedIn")
                    completion(result: "1")

                }
            })
            }.resume()
    }

    func register(username: String, password: String){
        let url = "http://www.wilsonfamily5.org/rlog/newAccount.php?u=\(username)&p=\(password)"
        let nsUrl = NSURL(string:url)
        let nsUrlRequest = NSURLRequest(URL: nsUrl!)
        NSURLSession.sharedSession().dataTaskWithRequest(nsUrlRequest){
            (data, response, error) in
            guard
                let data = data,
                let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
                else { return }
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                let defaults = NSUserDefaults.standardUserDefaults()
                defaults.setValue(contents as String, forKey: "userKey")
                defaults.setValue("1", forKey: "loggedIn")
            })
            }.resume()
    }

    func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
        print("ButtonClicked")
        if(buttonIndex == 1){
            print("1ButtonClicked")
            register(user, password: pass)
        }
    }



}

最佳答案

第一步

UIAlertViewDelegate 添加到您的类中;

class UserLogin, UIAlertViewDelegate {
....

第二步

设置委托(delegate)并实现"is"按钮loginAlert对象;

self.loginAlert = UIAlertView(title: "No Account Found", message: "We did not find an account matching that criterea. Do you want us to create you an account?", delegate: self, cancelButtonTitle: "No", otherButtonTitles: "Yes")
self.loginAlert.show()

现在 clickedButtonAtIndex 函数将被触发。

关于ios - UIAlertView Action 没有 swift 发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241747/

相关文章:

ios - 如果同一个文件中有 2 个 Appdelegate 类会发生什么

objective-c - 将 ivars 添加到 NSManagedObject 子类

ios - 后台推送通知不起作用 iOS12 Swift4.2

ios - 我似乎无法在 SWIFT 中使用 UIAlertViewController 从 UITextField 获取输入值?

ios - 如何使用元数据丰富 UIImage 数据

ios - 创建自定义核心数据类以子类化 MKAnnotation?

ios - Swift 内存管理 : creating views the right way and avoid memory leaks

iphone - 显示 UIAlertView 时可以收到消息吗

ios - <_UIPopoverBackground VisualEffectView> 被要求为其不透明度设置动画

ios - Google Places API - 下一页 token 返回相同的结果