Segue.

Slides:



Advertisements
Similar presentations
環境游離輻射 ( 六 ) 輻射與核能發電. 媽!這是我上班的 地方-核電廠。 地方好寬闊喔! 聽說日本原子彈爆炸死好幾 萬人,阿榮啊!你在這裡上 班,安全嗎?
Advertisements

第一章 餐饮服务程序 学习目的: 掌握餐饮服务四个基本环节的内容 正确表述和运用各种餐饮形式的服务程序 熟悉并利用所学知识灵活机动地为不同需求的 客人提供服务.
《小狗包弟 》之 从阅读到写作 学校:和风中学 年级:高一 参赛者:彭龙英. 预习检测一 思考:同学们读完作者与包弟 的故事后,说一说作者所表达的情 感是什么?
虹膜识别健康养老服务智能系统项目.
探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆  探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆 
職校、五專群科簡介.
学生教育办介绍 2015年9月.
江苏省工程造价管理协会 工作报告 2015年4月21日 扬州.
101年8月份 嘉義市道路交通安全聯席會報 酒駕行為與肇事現況分析 主講人:內政部警政署交通組科長張夢麟 1.
高校邦在线学习平台 学生学习手册 北京高校邦科技有限公司.
3.2 打地鼠游戏 学习目标: 随机图片的显示 时间控件的用法 函数的定义使用方法 随机数的产生使用方法 数学公式的使用方法 任务目标:
Lua+wax在ios上的应用 白 衣.
石家庄迅步网络科技有限公司 联系人:张会耀 电话:
向健康體位說 YES! 莿桐國中.
尔雅慕课学生操作手册说明.
请带上耳机.
上海宏弈源软件科技有限公司 — 12年专注益智软件研发 和配套产品服务 上海宏弈源软件科技有限公司.
无线行业市场数据月报 市场部 2013年7月 飞拓智库
Flipster App 使用教学 适用 iPad 和 iPhone
Objective C介紹與MVC.
提升时间管理.
Flipster App 使用教學 適用 iPad 和 iPhone
让快件更自由! 福州拓牛信息科技有限公司.
103學年度第1階段 志願選填試探後輔導作為 成效檢討與精進建議
活动主题:佛山智造 中国骄傲 随着互联网、云计算、大数据以及移动互联网的快速发展,技术不仅仅是一种工具,正加速重构着品牌的新格局。
                                        導師健康關懷 健康是一輩子的事 義守大學衛生保健組 關心您.
四川省卫生监督移动 执法终端介绍 发言人:陈成身 四川省卫生执法监督总队.
獎補助經預計支用報告 105年.
尔雅慕课学生操作手册说明 尔雅客服中心.
一种营销模式的转型,一种全新的金融房贷模式
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
《IOS应用开发教程》 QQ学习群:
《IOS应用开发教程》 QQ学习群:
尋找世界文明的曙光 美索不達米亞 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
Chapter 1 複習.
第17章 使用B4J建立跨平台應用程式 17-1 認識B4J整合開發環境 17-2 下載與安裝B4J開發環境
Chapter 14 iPhone 平台簡介.
尔雅慕课学生操作手册说明 尔雅客服中心.
尔雅慕课学生操作手册说明.
尔雅慕课学生操作手册说明 尔雅客服中心.
認識科學小知識-密室逃脫遊戲(App) 南華大學 傳播學系3年級
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
Storyboard.
IPHONE应用开发 资源管理项目组 2018年12月24日.
遊戲設計 Animation.
第6章 控制器 所谓控制器就是能够管理和控制各种操作的设备。在iPhone开发中有八种控制器分别为:View Controller、Object、Table View Controller、Tab Bar Controller、Page View Controller、External Object、Navigation.
华东理工大学 关于新校园卡功能启用的相关说明 2018年09月07日.
尔雅慕课学生操作手册说明 尔雅客服中心.
感測器.
Ch20. 計算器 (Mac 版本).
第三冊第十四課記承天夜遊 王永榮 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
《IOS应用开发基础教程》 QQ学习群:
Navigation Controller和 Table View
《IOS应用开发教程》 QQ学习群:
Objective C練習.
你没看到的开幕式 超越电视画面 来自现场的照片.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
102學年度下學期 班親會 五年仁班 楊曉逸老師.
第二階段「校園徒步區建置」 執行成果報告.
尔雅慕课学生操作手册说明 尔雅客服中心.
A Simple iOS Application
IOS界面制作一二事 一个IOS初学者的心得分享 蒋瞿风.
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
為民服務白皮書 台灣電力公司彰化區營業處  彰化區營業處 為民服務白皮書 誠信 關懷 服務 成長 1.
多點觸控與手勢.
实验课程学习手册.
云控APP说明书 适用于云控平台配置.
云控APP说明书 适用于云控平台配置.
App Inventor 2.
Presentation transcript:

Segue

實驗三: Segue 實驗主題: 實驗目的: 環境需求: 建立一個APP程式利用Segue來傳遞資訊 通過實作讓人瞭解Segue的運作過程 了解如何在不同的Viewcontroller之間傳遞資料 環境需求: Xcode 本實驗會提交一個可以輸入身高及體重的APP,輸入時身高體重數值時會切換IOS內建的數字鍵盤,輸入完身高體重後利用IBAction來觸發函式,函式中會去抓取身高及體重的數值,並計算BMI值 1

Segue 範例 主頁面需要輸入姓名,才可以輸入意見, 若沒有輸入則會彈出警告視窗 此範例首先會有一個主頁面,有一行輸入名稱的欄位用來讓使用者輸入名字,且點擊輸入意見按鈕後會連結到副頁面讓使用者輸入意見,若點擊按鈕時沒有輸入名字,則會彈出警告視窗,告訴使用者要輸入名字

Segue 範例 點擊輸入意見按鈕後連到另一個頁面來輸入意 見,再按送出按鈕會返回主頁面 在主頁面輸入名字,例如Job,則在點擊輸入意見按鈕後,就會拿取到名字的資料,將Job取代副頁面上面的Label文字,接著輸入意見後再點擊送出按鈕,主頁面就會接收到使用者的意見,並將意見取代下方的Label

創建專案 選擇Create a new Xcode project 開啟Xcode,並選擇第二個選項: 創建新專案 4

空白專案建立Single View App 建立空白專案 點選Main_iPhone.storyboard 首先打開Xcode建立一個新專案,選擇模板為SingleView Application的單頁面APP應用程式。

Disable autolayout 為了方便說明及觀看, storyboard關掉autolayout 佈局 一開始點選Main.storyboard會看到IPAD大小的空白畫面,為了方便說明簡單的UI,全自動布局的Auto Layout這邊就沒有說明,先把原本右邊的Use Auto Layout及 Use Size Classes取消勾選,就會變成一般的手機畫面了。

UI Label Text Field Button Editable cancel Text View 頁面中右下角選取拖拉、移動Label、Text Field、Button、Text View等UI元件,並改右邊屬性欄的文字,最後如圖所示 Text Field Button Editable cancel Text View

Main_iPhone.storyboard 接著可以再拉一個ViewController,將原本的頁面的按鈕按住Ctrl鍵或是滑鼠右鍵拖拉到新的ViewController,並選擇彈出選項的model,使原本的頁面只要一按下去按鈕就會連到另一個頁面,如影片所示。 按住Ctrl鍵或是滑鼠右鍵從按鈕連到下一個頁面

連好以後會出現一個中間有方塊的箭頭,代表有連到,接著點選此Segue箭頭,可以在右側屬性欄改變identifier屬性為comment。 設定連結名稱

增加一個Cocoa類別檔案 Class  IHCommentViewController Subclass UIViewController 為了能具體操作另一個頁面,我們需要新建一個ViewController Class來連結,選擇新建File->source->Cocoa Class,彈出視窗,命名此Class名稱為IHCommentViewController並選擇類別為UIViewController。

設定頁面對應的Class 將新增的頁面拉好一個Label、一個Text Field、兩個按鈕(取消、送出),並在右上方許選擇此頁面所屬的UIViewController Class,也就是我們剛剛建立的Class

XXXViewController.h #import <UIKit/UIKit.h> @interface IHViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *nameField; @property (weak, nonatomic) IBOutlet UILabel *ShowComment; @property(nonatomic,strong)NSString *comment; @end ViewController Class會分為.h、.m檔案,相當於C++語言的.h及.cpp檔案,我們先在將頁面的TextField、Label拖拉進ViewController .h這裡,產生IBOutlet連結分別為nameField及ShowComment,並增加@property(nonatomic,strong)NSString *comment 變數屬性。

XXXViewController.m -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualToString:@"comment"]){ IHCommentViewController *dst=segue.destinationViewController; dst.name=self.nameField.text; } -(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender{ if ([identifier isEqualToString:@"comment"]) { if ([self.nameField.text isEqualToString:@""]{ [[[UIAlertView alloc]initWithTitle:@"請輸入Name" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil]show]; return NO; return YES; -(IBAction)Cancel:(UIStoryboardSegue *)segue { } -(IBAction)Submit:(UIStoryboardSegue *)segue{ self.ShowComment.text=self.comment; 接著在ViewController .m檔案中撰寫程式,先撰寫連接頁面會用到的函式prepareForSegue及shouldPerformSegueWithIdentifier。 在準備切換頁面prepareForSegue函式中,將目標Controller存入變數dst中,並存取dst的name變數屬性為此頁面的Text Field文字:nameField。 在shouldPerformSegueWithIdentifier函式中,取identifier為comment的Segue,並判斷是否本身的nameField文字內容為空,若為空,則彈出警告視窗,來提示使用者還沒輸入Name。 接著寫兩個IBAction事件函式,分別為Cancel、Submit,在Submit函式中撰寫self.ShowComment.text=self.comment; 將當前的Label改為此comment字串變數的文字。

IHCommentViewController.h #import <UIKit/UIKit.h> @interface IHCommentViewController : UIViewController @property (weak, nonatomic) IBOutlet UILabel *ShowName; @property (weak, nonatomic) IBOutlet UITextField *commentField; @property(nonatomic,strong)NSString *name; @end 改好了ViewController .h、ViewController .m後,接著改我們剛剛新建立好的Class程式碼,在IHCommentViewController.h中拉入UI元件,Label、Text Field,分別為ShowName、commentField,並增加@property(nonatomic,strong)NSString *name 變數屬性。

接著將IHCommentViewController所控制的頁面的兩個按鈕,取消及送出,連到來源Scene頁面,也就是ViewController所控制的頁面內部的IBAction函式,分別為Cancel及Submit。

設定Segue identifier 連好以後此事件就會產生兩個名稱為 Unwind segue from 取消 to Exit 及 Unwind segue from 送出 to Exit 的Segue,也就是按此按鈕,產生上一頁動作時,會呼叫此事件來離開此頁面,並將Submit的Segue的右側identifier屬性改為Submit。

IHCommentViewController.m -(void)ViewDidLoad { self.ShowName.text=self.name; } -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"Submit"]) IHViewController *dst=segue.destinationViewController; dst.comment=self.commentField.text; } 接著我們在IHCommentViewController.m中撰寫ViewDidLoad 初始化函式,將原本空的ShowName字串改為當前name字串的內容。 並在切換頁面的函式prepareForSegue中撰寫程式,判斷來源Segue的identifier是否為Submit,若是,則存取來源的ViewController為dst,並將本身的文字字串內容改為dst的comment字串內容。

Finally 範例檔案:Segue 以上就是此範例的全部實作過程,具體流程就是先在第一個頁面輸入使用者的姓名: Bob,並點”輸入意見”按鈕來連到第二個頁面,第二個頁面會讀取並顯示第一個頁面的名字Bob,接著可以讓使用者輸入意見,使用者輸入完以後按下送出,返回到第一個頁面,會讀取並顯示第二個頁面所填入的意見內容。