發表文章

目前顯示的是有「iOS」標籤的文章

iOS_開發 拿到 Tableview Cell 上的按鈕是哪一個 (Tableview Cell Button)

圖片
近期在開發 iOS App 時候使用到, tableview 而且在我的 tableview 上面會有 一個 Button 和一個 ImageView, 當我點選到圖案時會外跳出一個新的 ViewController 按下 Button 可以類似 加到我的最愛的功能。 這時候就是需要,去知道現在點到的是哪一個 tableview Cell,  一開始的想法是 透過 didSelectRowAt 來看到點選是哪一個 cell   (但這個是無法成功的) 因此在網路上查了資料。 學習到 可以透過 寫自己的 Protocol 來用自己的 delegate 來完成 首先開啟專案與一般的 tableview 一樣, 然後在 cellForRowAt 這個一個方法 要多添加一個 cell.delegate = self 然後再寫一個自己的  Protocol 這裡我們取名,SwiftTableViewDelegate, 這裡面有一個 func 來告訴我們按到哪一個 cell上的按鈕。 接下來在cell的那個 Class 裡面, 把 cell 按下去的按鈕 Action  添加我們剛才的 delegate 最後我們在這個 TableViewController 裡面添加這個自己的delegate 就可以透過這個自定義的方法拿到 目前點選到哪個cell 的 button  參考網頁: Swift: Using Protocols to Add Custom Behavior to a UITableViewCell

IOS_學習筆記 (換頁的2個方法!)

圖片
快速學習換頁的兩個方法 這裡主要是記錄快速換頁的兩個方法, 首先,先講最簡單的換場方式! 拉View Controller 後 開一個新的資料夾,接下來把命名id 寫上ViewController 然後把按鈕的連結拉去,要show的畫面上做上連結!(完成) 這個方法只限於用Storyboard 開發才可以用 第二個方法,透過程式碼來換頁! 建立兩個View Controller! (記得幫新開的View Controller 寫上class) 第一頁建立一個按鈕Button(記得幫按鈕命名) 然後在第一頁的程式碼中,宣告去下一頁方法並實作方法內容。 這樣就能快速完成,換頁的這個功能了。 筆記心得: 每個新的View Controller記得 #import 進去,不然不會有人理你.... 參考網址: 不用寫程式碼換至下一頁 透過,簡單的拖拉完成 IOS_學習筆記(不用程式碼前進下一頁) 透過程式碼完成 IOS_學習筆記(用程式碼前往下一頁)

IOS_學習筆記(Slider)

快速學習 Slider_滑桿 運用: 透過三個Slider滑桿的變化,來控制背景顏色! 這個是簡單的一個畫面的內容,所以首先我要知道我們需要建立什麼 需要 3 slider 與 原本的ViewController;有了這兩樣東西, 要讓視圖與控制器說話,所以要建立三個 IBAction ,告訴他說被改變了 要讓控制器與視圖說話,所以要建立三個IBOutlet,告訴他要改什麼 程式碼內容: @interface ViewController () @property ( weak , nonatomic ) IBOutlet UISlider *radSlider; @property ( weak , nonatomic ) IBOutlet UISlider *greenSlider; @property ( weak , nonatomic ) IBOutlet UISlider *blueSlider; @end @implementation ViewController - ( void )viewDidLoad {     [ super viewDidLoad ];     // Do any additional setup after loading the view, typically from a nib. } - ( IBAction )rad:( id )sender {     [ self background ]; } - ( IBAction )green:( id )sender {     [ self background ]; } - ( IBAction )blue:( id )sender {     [ self background ]; } -( void )background{     // 拿到三個顏色     CGFloat   rad = self . radSlider . v...

IOS_Objective-C學習筆記__(繼承)

圖片
這一篇內容主要是介紹如何使用objective-c 中的繼承功能,透過圖解的方式案範例,可以更清楚了解,這個如何運作。 繼承是一個實用的功能,這個可以減少重覆使用的造字! 像是我們開兩個類別時,這兩個類別有相同的『屬性』與『方法』時, 照原來方式寫的話,兩個都要各自寫一次一樣的功能,因此可以透過繼承的方法 讓一樣內容的屬性方法放進去,而在夠過繼承的模式直接寫一次就可以使用了! 而這個繼承的方法是,再開一個新的類別! 把共同要使用的方法屬性寫進去! 在這會產生兩種狀況,繼承者與被繼承者 而接下來我們要先把繼承者imprt進去 繼承者的內容 先舉一個簡單例子! 我們先開兩個自訂飲料類別,分別是 奶茶 和 紅茶! 而在這個這兩個方法裡面有共同的方法和屬性,因此我們可以再開一個類別來裝( Mixtea )共同的屬性和方法,讓 紅茶 ( Redtea ) 和 奶茶 ( Milktea )這兩個類別來繼承這裡面的東西! 接下來我們要先把紅茶和奶茶的 .h檔案  #import Mixteat.h 檔案讓他們認識!! 再來要去主要執行檔案的部份也把他 #import 認識 完成後就到Mixtea.h  ,把會用到的方法和屬性寫下來 這樣接下來 就可以一起使用了,再到Mixtea.m 把要實作的方法寫進去 最後到主要執行檔案要做的事情寫上去

IOS開發筆記__AlertController(警告控制器-含文字框的警告控制器)

圖片
這一篇一樣式警告視窗,而這個警告視窗是 含有文字的!(例如輸入帳號密碼) 因此在警告視窗上我們需要加上,文字框來讓使用者輸入 (configuration 有組態的意思,這裡可以設定文字框的內容,而要設定的內容要寫在block內) 這篇主要不同的部分是在於,在這控制器加上了文字框,因此我們會再加上面所提到的 addTextFieldWithConfigurationHandler 這個來讓畫面出現可以輸入文字框的內容! 而保護使用者輸入文字這一段,是讓使用者輸入完密碼會變符號隱藏起來的效果! 效果如下 也因為當按下送出帳號密碼時,要去取得使用者輸入的帳號密碼,因此程式碼的部分就寫在按下送出這個部分了! 筆記: 因此整體而言,做警告視窗的方式流程是一樣的,差別在於要加入讓使用者文字的文字框! 以及當輸入完成後,按下確定要傳送的帳號密碼部份,分別把帳號和密碼文字取出,然後在印出。 基本上就是想幹嘛,就是去寫他要的程式碼! 然後當使用者使者動作結束後,接下來要按什麼做下一個動作時,要幹嘛就馬要幹嘛的事寫在相呼應的區域上。

IOS開發筆記__AlertController(警告控制器-沒有文字框的警告控制器)

圖片
  這個是帶有警告意味的訊息意思,所以在使用上要看重要性而定!而目前要寫的是兩種警告的表示方法。一個是有文字框的警告視窗(類似輸入帳號密碼),另一個是沒有文框的警告(跳出一個訊息)! 這一篇筆記主要是記錄 “沒有文字框的警告視窗” 接下來前面的做法和前面的方式一樣,按下按鈕後要彈出視窗!View-->ViewController因此我們要先建立IBAction通道! 然後再準備警告視窗和警告視窗上的按鈕,然後填寫要呈現的內容。 準備警告視窗,準備警告視窗上的按鈕(一個確認,一個取消),把這按鈕加到畫面上,最後再把整個警告視窗呈現出來 畫面呈現 筆記: ## 然後這個控制器,還必須加入上面的按鈕,而在這上面的不是button而是UIAlertAction,而這個也是直接按照格式把要顯示的內容填上即可! 而顯示的方式有三種形式 ## AlertController 使用很方便,只要按照他出現的程式碼去填寫,你要出現的內容! 而警告出現的方式有兩種,一個是從中間出現,另一個是由上而下

IOS開發筆記__回傳函數 / 匿名函數 / 匿名方法( block / callback )

圖片
回傳函數 block 這個block的功能像是一個打包盒,可以把很多要執行的程式碼包在一個方法裡面, 而這個方法名子不是物件,因此我們可以透過這個 block 來把它包起來 block的表示使方式如下 ^{  //要做的程式碼寫在這裡面   } 例如下面程式碼:

IOS開發筆記__屬性清單Property List

圖片
這一篇內容會提到屬性清單Property List 要把資料放到plist文字檔案裡面(縮寫是plist) 用開新資料夾的方式來新增一個 .plist 的清單(全名是 Property List) 而這個 Property List 是個容器,裡面有兩種型別,分別是Array & Dictionary 那接下來我可以在這個資料夾裡建立之後要呈現的內容 在到ViewDidLoad 把要做的事情寫上去,讀取data  檔案的 plist 然後再把路的資料讀取成陣列, 然後這裡一樣要記得PickerView 簽署協定必寫的兩個方法,寫要幾個欄幾個列,還有把文字呈現出來!(這樣就完成 下面可以滾的選單了) 最後就是要把剛剛我們在 Property List 裡面寫的內容部份給呈現出來 筆記: 單例模式( singlention ),表示物件只會被初始化一次,整個執行結束只會拿到一個物件 NSUserDefaults,這個也是單例模式,小的微型資料庫(約500K) UIScreen 這個也是單例模式,拿到使用者螢幕尺寸 ## 單例模式只會被初始化一次,所以不可以自己打 alloc init NSBundle這個類別有打包的意思 而下面這一句話是指,我要拿那一份打包檔案 不可以自己打 alloc init , 因為這樣打是產生物件

IOS開發筆記__ UIPickerView

圖片
UIPicker 建立在委派模式上 PickerView 主要有兩個區塊,一個是欄component@ 另一個是列row (沒有限制可以有多少個欄和列,而這個欄列的數量是由程式碼完成的) PickerView --- >Controller  之間要建立兩個通道一個是Delegate另一個是DataSource。 而PickerView --- >Controller  是Delegate  (這個通道主要是回報目前被選的狀態) 而PickerView --- >Controller  透過 DataSource 問Controller 要呈現什麼  (而這個是PickerView餵資料給Controller) 因此我們先建立通道以下兩個通道 因為有兩個通道,所以要簽兩個協定,而一個類別能簽的協定數量沒有限制! 在簽署協定之後會出現驚嘆號,告訴你有兩個必須要寫的協定實作內容! 判斷方式是缺寫什麼內容 用command去按PickerViewDataSource 會看到 @require @end 之間必須寫的兩個方法 (各語言中的require 中的內容都是必須做的) 接下來把這兩個必須要寫的內容加上去,然後就可以完成了 這個是PickerView裡面的其他功能之一,可以知道使用者滑到哪個欄哪個列 筆記: Date Picker 是全球都一樣的格式,所以無法制定內容 PickerView 有內建高度 小技巧! 當看到# 的這段內容,是寫給前置編譯器看的內容, 在畫面上方可以快速跳到想去的方法裡面 整體流程是,先把我們需要的PickView建構出來,看需要幾個欄和幾個列,在程式碼中來呈現!接下來在建立兩個通道,一個回傳狀態另一個回傳資料。 而在這兩個簽署的協定中有必須做的協定內容,其中一個呈現讓畫面呈現有幾欄,另外一個讓畫面呈現有幾列! 在文字內容的部分用陣列來呈現,這樣他取出的數字,即可以直接使用

IOS開發筆記_設計模式 (文字框縮鍵盤)

圖片
在IOS中有幾項重要的設計模式 委派模式 (Delegate) 單例模式 (Singleton) 觀測者模式 (Observer ) 通知模式 (Notification ) MVC設計模式  註:近期還有一個MVVM ( Model View ViewModel) 其中最重要的是, 委派模式 (Delegate) 而MVC模式通常會和委派模式 (Delegate)一起使用! 一般的MVC模式中會是以下兩個通道通道的建立 Controller --->View(建立IBOutlet) View --->Controller (建立IBAction) 而在加入委派模式 (Delegate)後會 再多兩個“單向通道”! View --->Controller (建立Delegate , 這裡是回報 狀態的改變 ) View --->Controller (建立DataSource) 在View --->Controller 之間有三個通道可以選擇,但是這個 不是可以隨意選擇 ,因為一開始就有設定好什麼元件走什麼通道!(例如:UIButton只能夠走IBAction) 委派模式:意思類似,我有秘書,而我讓秘書去幫我做事情 View 把任務委派給 Controller 完成 接下來我們要透過這個委派模式,讓我們在點選文字框使用後讓文字框回傳狀態,可以有縮鍵盤的功能! 首先我們先建立text的和ViewController通道,一樣式按住control拉線過去ViewController 接下跑出來的小框選擇 delegate ,後會有個白色小點表示已連結成功! 然後我們要在@interface與@end之間 簽署 協定(Protocol) 在ViewController 後面加上 < UITextFieldDelegate > 只要寫了這一段話,ViewController就看得懂delegate內部的八種方法,以下是內建的八種方法 換句話說ViewController簽...

IOS開發筆記__透過程式碼回到上一頁!

圖片
我們要透過程式碼來,回到上一頁!那麼第一個步驟也是先建立IBAction然後認識一個新的API文件 dismissViewControllerAnimated 這時候第一個參數會問是否要帶動畫,而第二個值會問做完之後要做什麼事 這時候我們就完成,透過程式碼回到上一頁了!

IOS學習筆記__前進下一頁並帶入文字(用程式碼完成)!

圖片
這一篇要用程式碼來讓畫面跳轉至下一個新的頁面,在這之前也可以先回顧 IOS開發筆記_ 換頁的方法(不用寫程式碼) 來對照比較。 首先我們要幫第二頁取名,慣例取名會和取和類別名一樣,這樣也比較好管理 接下來幫第一頁的按鈕做一個 IBAction instantiateViewControllerWithIdentifier 物件化這個ViewController用Identifier 然後顯示下一頁的視圖控制器 sender: 這個部分可以填 self 或是 nil  然後接下來要把文字帶給第二頁,一樣是先拿到使用者輸入的文字,將這文字帶給下一頁的視圖控制器 完整程式碼如;name 是我們之前設定的那個NSString* name; 這樣我們就完成透過程式碼,把第一頁的文字帶到第二頁呈現! 筆記: 上一篇文章,把文字帶給下一頁上一個方法是透過preparForSegue這個方法把文字內容過去,而這個用程式碼來完成的方法則要透過按鈕的IBAction來完成