9.3作業更新 利用 page control,segmented control,button & gesture 更換內容

多加個 page control+ Swipe Gesture Recognizer

先來畫面…

把照片先移到Assets 裡面唷>>>然後拖拉一個ImageView 在 View control 上

將圖片置入ImageView 的位置…

在創作兩個按鈕Button (+)取<物件>

然後把名字改成”下一頁”>>>複製>>>更動為“上一頁“

要先懂得利用Assistance 去協助>>拖拉Outlet

開始使用程式端….

拖拉按住Control 不放 移動滑標到19行(你想要的位置)

要在ViewDidload() 的{ } 下面進行唷, 這樣才會有Action的動作

宣告個常數在List 裏面用 [ ] array 的方式進行,如下所示意

在宣告Index = 0 ,才知道 下一頁的功能上面可以用 “值” 來計算下一頁!

忘記….><”””””. 宣告時,Xcode會提醒你是不是要Var 一下~

在 @IBAction func next….時

要先宣告個”名字”才能把把”值“放到之前宣告“電影”裏面….;再來就是imageView裡面叫出“畫面” (image),把它命名為剛剛宣告的名字,如下:

執行後~~可以下一頁!成功了20%唷!!!

萬一出現問題的話…

最後掛掉沒繼續…那我們給他加點…

%餘數的意思< 因為要去抓Movies裡面有多少個”值”(index), 就可 以 用
“ .count ”去movies 考察有多少個….值

“ .count ”去 let movies 考察有多少個….值(共有三個“值”)
就可以一直循環嚕!

接下來,換上一頁~

理論上是要index -1 但是….沒法執行喔

要先知道 movies 裡面多少”值”(index),之後才能去-1 但也是要搭配% (餘數)去深入了解 movies 裡面的值 有多少…如下:

為了要確認是否正確..可以用 print(index) 的功能去顯示:在 Terminal 下面

下ㄧ頁也是可以使用 print(index) 去看值和所想的一步一樣~

import UIKitclass ViewController: UIViewController {
let movies = ["k2","k3","k4"]
var index = 0
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}


@IBAction func pre(_ sender: Any) {
index = (index + movies.count - 1) % movies.count
print(index) //去了解下面數值如何改變
let name = movies [index]
imageView.image = UIImage(named: name)
}






@IBAction func next(_ sender: Any) {
index = (index + 1) % movies.count
// 這樣就可以一直循環嚕
print(index)
let name = movies [index]
imageView.image = UIImage(named: name)

加入Page control

到程式畫面下去執行Control 按住不要放 拖移到Outlet

按住Control 拖拉到指定地方

變成下圖:

拖拉完之後看畫面….

畫面要動…但是….進不如意….那就發現….Page control 的點點不會動…

那就是要多寫一句程式在Action的部分

pageControl.currentPage = index

先做“上一頁” 的部分,可以知道….有效果…

按照同樣的方式,完成『下一頁』功能:

完成!!!

還有手勢的部分~~

首先要先知道照片的方向哪邊是…下一頁…我們可以從模擬器中得知:

由『右到左』是下一頁…

那如果要上一頁呢?

由左到右

由『右到左』是下一頁…
由『左到右』是上一頁…

記住上面後…就來添加手動手勢功能…

跳出程式點選View control , 把Swipe Gesture Recognizer 拖移到圖片中

記住我們是要做上一頁”由左到右:attributes inspector 下面更動 Right

之後要把『Swipe Gesture Recognizer 拖移到 >>>> Action

拖拉到程式上面後…會看到 Swipe Gesture Recognizer 裏面 Sent Actions
裡出現一個指示~~

再去執行模擬器…應該是可以的!!

既然完成上一頁, 我們就可以來快速執行下一頁!

由『右到左』是下一頁…

記住凡事要多做確認!

更新:如果要commit第二次的時候要怎麼做?

其實很簡單,首先一樣選擇Scource Control->Commit

會出現commit的頁面,重點在於左下方的Push To Remote,將其打勾,之後再去畫面的右下角按下Commit File and Push就自動上傳了

記得寫更新的原因在Push to remote 唷!

如果在你commit出去的時候,忘了勾Push to remote,只要再操作一次Source Control->Push,就會將更新的檔案Push到Github了。

之後別忘了去看新的版本!!

import UIKitclass ViewController: UIViewController {
let movies = ["k2","k3","k4"]
var index = 0
@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func pre(_ sender: Any) {
index = (index + movies.count - 1) % movies.count
print(index) //去了解下面數值如何改變
let name = movies [index]
imageView.image = UIImage(named: name)
pageControl.currentPage = index
}

@IBAction func next(_ sender: Any) {
index = (index + 1) % movies.count
// 這樣就可以一直循環嚕
print(index)
let name = movies [index]
imageView.image = UIImage(named: name)
pageControl.currentPage = index
}
}

--

--

weiWeiCFI
彼得潘的 Swift iOS / Flutter App 開發教室

Keep simple being activity life and move on! 階段性人生,新的領域更要比他人更加把勁,讓自己又開始呼吸;You never try you never know!