Heim Web-Frontend HTML-Tutorial 利用Swift之协议语法实现页面间的传值功能_html/css_WEB-ITnose

利用Swift之协议语法实现页面间的传值功能_html/css_WEB-ITnose

Jun 24, 2016 am 11:57 AM
利用 功能 协议 语法 页面

随着Swift 新开发语言的发布,又随着Xcode6.0.1的正式发布,利用swift编写iOS代码迫在眉睫,笔者在使用Objective-C开发近三年以来,对这种优雅的语法深感赞叹,下面我将对比式的实现一个页面传值的demo,使用语法是swift,页面传值是学习iOS初期必修的demo,因为涉及一个非常难懂的语法:协议和委托,这里涉及的swift语法和一些基本操作我不在一一赘述,如果方便可下载IT面试宝典APP,里面有对其详细介绍,那就开门见山吧,用代码实现以下功能:

1,创建Swift工程,可以使用XIB或纯代码,这里主要纯代码,大家会注意到这个奇怪的语言没有了.h文件,而是以.swift的文件

2,修改手机屏幕上的显示名称,这个和XCODE5 严重的不同,不知道是后退还是前进,笔者表示很无语,后面看看怎么恢复吧

3,基本的swift语法来定义:协议,正向传值和反向传值,即回调

4,简单的提下如何把XIB默认的改成纯代码,即删除XIB文件

5,页面功能是首页输入学号,然后点击注册,模态呈现注册页面,此时显示了上一个页面填入的学号,接着输入姓名后点击确定,返回上个页面显示名称

就这么多吧,下面来具体实现下,如果是新手可以照着步骤来做,遇到不明白的语法,请自行百度:


一,创建工程,总体代码结构如下图:

啥也不说了,进入下一步

二,纯代码构建首页面(HomeViewController.swift)和注册页面(RegisterViewController.swift)

class HomeViewController: UIViewController,RegisterDelegate {        var nameLbl : UILabel!    var numTF : UITextField!        override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view.        self.view.backgroundColor = UIColor.whiteColor()        let titleItem : UINavigationItem = UINavigationItem(title: "首页")        let NVC : UINavigationBar = UINavigationBar(frame: CGRectMake(0, 20, 320, 44))        NVC.setItems([titleItem], animated: true)        self.view.addSubview(NVC)                                numTF = UITextField(frame: CGRectMake(10, 100, 300, 35))        numTF.placeholder = "输入学号"        numTF.borderStyle = UITextBorderStyle.Line        numTF.textAlignment = NSTextAlignment.Center        numTF.clearButtonMode = UITextFieldViewMode.WhileEditing        self.view.addSubview(numTF)                nameLbl = UILabel()        nameLbl.frame = CGRectMake(10, 150, 300, 40)        nameLbl.text = ""        nameLbl.backgroundColor = UIColor.lightGrayColor()        nameLbl.textAlignment = NSTextAlignment.Center        self.view.addSubview(nameLbl)                                let registerBtn : UIButton = UIButton()        registerBtn.frame = CGRectMake(10, 200, 300, 40)        registerBtn.backgroundColor = UIColor.lightGrayColor()        registerBtn.setTitle("注册", forState: UIControlState.Normal)        registerBtn.addTarget(self, action: "registerClick:", forControlEvents: UIControlEvents.TouchUpInside)        self.view.addSubview(registerBtn)            }
Nach dem Login kopieren

注意导航栏代码,以及各种UI的代码,很奇葩的写法,目前笔者只适配320的,没有做别的,大家可自行适配,这样一个首页UI就创建出来了,接着实现点击事件:

 func goRegister(){                if numTF.text.isEmpty {                        var alert : UIAlertView = UIAlertView(title: "不能为空", message: "填写你的学号", delegate: nil, cancelButtonTitle: "知道了")            alert.show()            numTF.becomeFirstResponder()                    }else{                        var rootVC :RegisterViewController = RegisterViewController()            let NVC :UINavigationController = UINavigationController(rootViewController: rootVC)            self.presentViewController(NVC, animated: true, completion: nil)        }            }
Nach dem Login kopieren

这样就到了注册页面(RegisterViewController.swift),现在贴下注册页面代码:

class RegisterViewController: UIViewController,UITextFieldDelegate{    var nameTF : UITextField!    var num : String!        override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view.                self.view.backgroundColor = UIColor.whiteColor()        self.title = "注册"                let leftItem : UIBarButtonItem? = UIBarButtonItem(title: "取消", style: UIBarButtonItemStyle.Plain, target: self, action: "back")        self.navigationItem.leftBarButtonItem = leftItem                        let numLbl : UILabel = UILabel()        numLbl.frame = CGRectMake(10, 100, 300, 40)        numLbl.text = self.num        numLbl.backgroundColor = UIColor.lightGrayColor()        numLbl.textAlignment = NSTextAlignment.Center        self.view.addSubview(numLbl)                       nameTF = UITextField(frame: CGRectMake(10, 150, 300, 35))        nameTF.placeholder = "输入姓名"        nameTF.textAlignment = NSTextAlignment.Center        nameTF.borderStyle = UITextBorderStyle.Line        nameTF.clearButtonMode = UITextFieldViewMode.WhileEditing        nameTF.delegate = self        self.view.addSubview(nameTF)                        var submitBtn : UIButton = UIButton(frame: CGRectMake(10, 210, 300, 40))        submitBtn.backgroundColor = UIColor.lightGrayColor()        submitBtn.setTitle("确定", forState: UIControlState.Normal)        submitBtn.addTarget(self, action: "submitClick:", forControlEvents: UIControlEvents.TouchUpInside)        self.view.addSubview(submitBtn)    }
Nach dem Login kopieren

这里有个取消按钮,其他和首页一样,实现点击确认代码:

 func submitClick(sender : UIButton)    {        goBack()    }        func goBack(){                if nameTF.text.isEmpty {                        var alert : UIAlertView = UIAlertView(title: "不能为空", message: "填写你的名字", delegate: nil, cancelButtonTitle: "知道了")            alert.show()            nameTF.becomeFirstResponder()                    }else{                                    self.dismissViewControllerAnimated(true, completion: { () -> Void in                                                println("我要确定了,你知道吗?");            })        }    }             //MARK: TFDELEGATE        func textFieldShouldReturn(textField: UITextField) -> Bool {                goBack()                return true    }        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {        self.view.endEditing(true)    }
Nach dem Login kopieren

这里代码也可注意了,多了一个点击view取消所以编辑响应事件

到这里页面之间就能相互切换进入了,具体的代码确实非常的不同,其中的swift语法和UI语法自行学习啦


三,创建协议

在HomeViewController 文件里面编写代码如下:

import UIKitprotocol RegisterDelegate{    func registerName(name : NSString)}class HomeViewController: UIViewController,RegisterDelegate {        var nameLbl : UILabel!    var numTF : UITextField!
Nach dem Login kopieren
........  
Nach dem Login kopieren

注意要实现这个协议,然后实现协议方法如下:

           func registerName(name: NSString) {        nameLbl.text = name    }    
Nach dem Login kopieren

了解object-C的朋友应该很明白这个步骤了,再这之前我们要在被委托的页面去实现一个协议对象,代码如下:

import UIKitclass RegisterViewController: UIViewController,UITextFieldDelegate{    var nameTF : UITextField!    var delegate : RegisterDelegate!    var num : String!        override func viewDidLoad() {        super.viewDidLoad()
Nach dem Login kopieren
.....
Nach dem Login kopieren

注意这里的delegate,这就是协议委托对象,说白了就是要把之前的home页面这个对象传值过来赋予delegate,而delegate又遵循了协议,所以当delegate调用协议里面方法的时候就会再home页面里面由home来执行这个方法的实现过程,这样能达到把注册页面的值传到首页来显示的效果,这就是协议和委托配合使用的好处,好了,如果大家看到这里晕头了,请接着放下看,先不要管这句话了,我们回到home看看怎么设置代理的,代码如下,顺便看看我正向把学号传到注册页面去的代码:

 func goRegister(){                if numTF.text.isEmpty {                        var alert : UIAlertView = UIAlertView(title: "不能为空", message: "填写你的学号", delegate: nil, cancelButtonTitle: "知道了")            alert.show()            numTF.becomeFirstResponder()                    }else{                        var rootVC :RegisterViewController = RegisterViewController()            rootVC.delegate = self;            rootVC.num = self.numTF.text                        let NVC :UINavigationController = UINavigationController(rootViewController: rootVC)                        self.presentViewController(NVC, animated: true, completion: nil)        }            }
Nach dem Login kopieren

然后我们再回到注册页面看看这个委托者到底在什么地方调用了协议方法:

   func goBack(){                if nameTF.text.isEmpty {                        var alert : UIAlertView = UIAlertView(title: "不能为空", message: "填写你的名字", delegate: nil, cancelButtonTitle: "知道了")            alert.show()            nameTF.becomeFirstResponder()                    }else{                        self.delegate!.registerName(self.nameTF.text)                        self.dismissViewControllerAnimated(true, completion: { () -> Void in                                                println("我要确定了,你知道吗?");            })        }    }
Nach dem Login kopieren


注意不同点啊,就是在不为空这里将姓名传递到协议方法的参数里面带到首页来显示,实现了一个回调传值的功能。


如果完成前面的几个步骤,你就可以测试是否能相互传值了,如果成功了,你可以休息休息了,下面就简单提下AppDelegate.swift里面我是怎么写的,注意啊,我把默认的ViewController.swift创建完成后删除了啊

    var window: UIWindow?    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {        // Override point for customization after application launch.                self.window?.rootViewController = HomeViewController()                        return true    }
Nach dem Login kopieren

第四步,纯代码替换Main.storyboard文件,先删除Main.storyboard

代码如下:

var window: UIWindow?    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {        // Override point for customization after application launch.                        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)        self.window?.backgroundColor = UIColor.whiteColor()        self.window?.makeKeyAndVisible()        self.window?.rootViewController = HomeViewController()                        return true    }
Nach dem Login kopieren

这样就等于是纯代码来实现了全部代码

第五步,修改显示名称

由于Xcode6 没有了InfoPlist.strings文件,这个你需要创建一个同名文件,又因为在info文件里面缺失了key:Bundle display name,这又要你手动添加,然后在InfoPlist.strings文件里面写入同Xcode5 一样的代码:

"CFBundleDisplayName" = "学号注册";
Nach dem Login kopieren

至此我们就实现了最初设定的全部功能,可以说这也是笔者的一次摸索,如此简单的一个demo却耗费了半天的时间,其中不乏对语法的查阅,功能的查找,确实来之不易,希望给读者带来效率,如需代码,加下面QQ群可索取,实现效果图:


附录:转载本博客,请注明出处,维护版权,人人有责。



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Mar 23, 2024 pm 10:27 PM

Sowohl die Mobiltelefone vivox100s als auch x100 sind repräsentative Modelle der Mobiltelefonproduktlinie von vivo. Sie repräsentieren jeweils das High-End-Technologieniveau von vivo in unterschiedlichen Zeiträumen. Daher weisen diese beiden Mobiltelefone gewisse Unterschiede in Design, Leistung und Funktionen auf. In diesem Artikel wird ein detaillierter Vergleich dieser beiden Mobiltelefone im Hinblick auf Leistungsvergleich und Funktionsanalyse durchgeführt, um Verbrauchern dabei zu helfen, das für sie geeignete Mobiltelefon besser auszuwählen. Schauen wir uns zunächst den Leistungsvergleich zwischen vivox100s und x100 an. vivox100s ist mit dem Neusten ausgestattet

Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Mar 21, 2024 pm 08:21 PM

Mit der rasanten Entwicklung des Internets ist das Konzept der Selbstmedien tief in den Herzen der Menschen verankert. Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Als nächstes werden wir diese Probleme einzeln untersuchen. 1. Was genau ist Self-Media? Wir-Medien bedeuten, wie der Name schon sagt, dass Sie die Medien sind. Dabei handelt es sich um einen Informationsträger, über den Einzelpersonen oder Teams selbstständig Inhalte erstellen, bearbeiten, veröffentlichen und über die Internetplattform verbreiten können. Anders als traditionelle Medien wie Zeitungen, Fernsehen, Radio usw. sind Selbstmedien interaktiver und personalisierter und ermöglichen es jedem, zum Produzenten und Verbreiter von Informationen zu werden. 2. Was sind die Hauptmerkmale und Funktionen von Self-Media? 1. Niedrige Hemmschwelle: Der Aufstieg der Selbstmedien hat die Hemmschwelle für den Einstieg in die Medienbranche gesenkt und es werden keine professionellen Teams mehr benötigt.

Welche Funktionen bietet die Kontoverwaltungssoftware Xiaohongshu? Wie betreibe ich ein Xiaohongshu-Konto? Welche Funktionen bietet die Kontoverwaltungssoftware Xiaohongshu? Wie betreibe ich ein Xiaohongshu-Konto? Mar 21, 2024 pm 04:16 PM

Da Xiaohongshu bei jungen Menschen immer beliebter wird, beginnen immer mehr Menschen, diese Plattform zu nutzen, um verschiedene Aspekte ihrer Erfahrungen und Lebenseinblicke auszutauschen. Die effektive Verwaltung mehrerer Xiaohongshu-Konten ist zu einem zentralen Thema geworden. In diesem Artikel werden wir einige Funktionen der Xiaohongshu-Kontoverwaltungssoftware besprechen und untersuchen, wie Sie Ihr Xiaohongshu-Konto besser verwalten können. Da die sozialen Medien wachsen, müssen viele Menschen mehrere soziale Konten verwalten. Dies ist auch eine Herausforderung für Xiaohongshu-Benutzer. Einige Xiaohongshu-Kontoverwaltungssoftware kann Benutzern dabei helfen, mehrere Konten einfacher zu verwalten, einschließlich automatischer Inhaltsveröffentlichung, geplanter Veröffentlichung, Datenanalyse und anderen Funktionen. Mithilfe dieser Tools können Benutzer ihre Konten effizienter verwalten und die Bekanntheit und Aufmerksamkeit ihres Kontos erhöhen. Darüber hinaus verfügt Xiaohongshu über eine Kontoverwaltungssoftware

PHP-Tipps: Implementieren Sie schnell die Funktion „Zurück zur vorherigen Seite'. PHP-Tipps: Implementieren Sie schnell die Funktion „Zurück zur vorherigen Seite'. Mar 09, 2024 am 08:21 AM

PHP-Tipps: Implementieren Sie schnell die Funktion zum Zurückkehren zur vorherigen Seite. Bei der Webentwicklung müssen wir häufig die Funktion zum Zurückkehren zur vorherigen Seite implementieren. Solche Vorgänge können das Benutzererlebnis verbessern und Benutzern die Navigation zwischen Webseiten erleichtern. In PHP können wir diese Funktion durch einfachen Code erreichen. In diesem Artikel wird erläutert, wie Sie die Funktion zum Zurückkehren zur vorherigen Seite schnell implementieren können, und es werden spezifische PHP-Codebeispiele bereitgestellt. In PHP können wir $_SERVER['HTTP_REFERER'] verwenden, um die URL der vorherigen Seite abzurufen

Was ist Discuz? Definition und Funktionseinführung von Discuz Was ist Discuz? Definition und Funktionseinführung von Discuz Mar 03, 2024 am 10:33 AM

„Discuz erkunden: Definition, Funktionen und Codebeispiele“ Mit der rasanten Entwicklung des Internets sind Community-Foren zu einer wichtigen Plattform für Menschen geworden, um Informationen zu erhalten und Meinungen auszutauschen. Unter den vielen Community-Forumsystemen wird Discuz als bekannte Open-Source-Forumsoftware in China von der Mehrheit der Website-Entwickler und -Administratoren bevorzugt. Was ist Discuz? Welche Funktionen hat es und wie kann es unserer Website helfen? In diesem Artikel wird Discuz ausführlich vorgestellt und spezifische Codebeispiele beigefügt, damit die Leser mehr darüber erfahren können.

So implementieren Sie einen Seitensprung in 3 Sekunden: PHP-Programmierhandbuch So implementieren Sie einen Seitensprung in 3 Sekunden: PHP-Programmierhandbuch Mar 25, 2024 am 10:42 AM

Titel: Implementierungsmethode des Seitensprungs in 3 Sekunden: PHP-Programmierhandbuch In der Webentwicklung ist der Seitensprung eine übliche Operation. Im Allgemeinen verwenden wir Meta-Tags in HTML- oder JavaScript-Methoden, um zu Seiten zu springen. In bestimmten Fällen müssen wir jedoch Seitensprünge auf der Serverseite durchführen. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Programmierung eine Funktion implementieren, die innerhalb von 3 Sekunden automatisch zu einer bestimmten Seite springt, und es werden auch spezifische Codebeispiele aufgeführt. Das Grundprinzip des Seitensprungs mit PHP ist eine Art

Wie man mit dem Problem umgeht, dass die Laravel-Seite CSS nicht korrekt anzeigen kann Wie man mit dem Problem umgeht, dass die Laravel-Seite CSS nicht korrekt anzeigen kann Mar 10, 2024 am 11:33 AM

„Wie man mit dem Fehler umgeht, dass Laravel-Seiten CSS nicht korrekt anzeigen, sind spezifische Codebeispiele erforderlich.“ Wenn Sie das Laravel-Framework zum Entwickeln von Webanwendungen verwenden, tritt manchmal das Problem auf, dass die Seite CSS-Stile nicht korrekt anzeigen kann, was dazu führen kann Seite, um abnormale Stile darzustellen. In diesem Artikel werden einige Methoden vorgestellt, um mit dem Versagen von Laravel-Seiten bei der korrekten Anzeige von CSS umzugehen, und spezifische Codebeispiele bereitgestellt, um Entwicklern bei der Lösung dieses häufigen Problems zu helfen. 1. Überprüfen Sie den Dateipfad. Überprüfen Sie zunächst den Pfad der CSS-Datei.

Wofür wird PHP verwendet? Entdecken Sie die Rolle und Funktionen von PHP Wofür wird PHP verwendet? Entdecken Sie die Rolle und Funktionen von PHP Mar 24, 2024 am 11:39 AM

PHP ist eine serverseitige Skriptsprache, die in der Webentwicklung weit verbreitet ist. Ihre Hauptfunktion besteht darin, dynamische Webinhalte zu generieren. In Kombination mit HTML können damit reichhaltige und farbenfrohe Webseiten erstellt werden. PHP ist leistungsstark und kann verschiedene Datenbankoperationen, Dateioperationen, Formularverarbeitung und andere Aufgaben ausführen und bietet leistungsstarke Interaktivität und Funktionalität für Websites. In den folgenden Artikeln werden wir die Rolle und Funktionen von PHP anhand detaillierter Codebeispiele näher untersuchen. Werfen wir zunächst einen Blick auf eine häufige Verwendung von PHP: dynamische Webseitengenerierung: P

See all articles