#11 多層選擇 App

成品:

code:



import UIKit

// 定義一個結構來表示卡通角色
struct Cartoon {
let name: String // 卡通角色的名字
let pic: String // 卡通角色的圖片名稱
}

class ViewController: UIViewController {

// 用於連接來自Storyboard的UI元素的Outlet
@IBOutlet weak var nameLabel: UILabel! // 用於顯示角色名稱的標籤
@IBOutlet weak var picImageView: UIImageView! // 用於顯示角色圖片的ImageView
@IBOutlet weak var pageControl: UIPageControl! // 用於在角色之間導航的Page控制器
@IBOutlet weak var segmentedControl: UISegmentedControl! // 用於切換卡通系列的分段控制器

// 用於存儲不同卡通角色的數組
let spongeBob: [Cartoon] = [
Cartoon(name: "海綿寶寶", pic: "海綿寶寶"),
Cartoon(name: "派大星", pic: "派大星"),
Cartoon(name: "小蝸", pic: "小蝸"),
Cartoon(name: "蟹老闆", pic: "蟹老闆"),
Cartoon(name: "章魚哥", pic: "章魚哥")
]

let crayonShinChan: [Cartoon] = [
Cartoon(name: "野原新之助", pic: "小新"),
Cartoon(name: "阿呆", pic: "阿呆"),
Cartoon(name: "櫻田妮妮", pic: "妮妮"),
Cartoon(name: "風間徹", pic: "風間"),
Cartoon(name: "佐藤正男", pic: "正男")
]

let doraemon: [Cartoon] = [
Cartoon(name: "哆拉a夢", pic: "多拉a夢"),
Cartoon(name: "野比大雄", pic: "大雄"),
Cartoon(name: "源靜香", pic: "靜香"),
Cartoon(name: "骨川小夫", pic: "小夫"),
Cartoon(name: "剛田武(胖虎)", pic: "胖虎")
]

// 更新顯示的卡通角色圖片和名字的函數
func changeImage() {
let cartoon: Cartoon
// 確定分段控制器中選中的是哪個卡通系列
if segmentedControl.selectedSegmentIndex == 0 {
// 如果選中了海綿寶寶系列,從相應的數組中獲取角色
cartoon = spongeBob[pageControl.currentPage]
} else if segmentedControl.selectedSegmentIndex == 1 {
// 如果選中了蠟筆小新系列,從相應的數組中獲取角色
cartoon = crayonShinChan[pageControl.currentPage]
} else {
// 如果選中了哆啦A夢系列,從相應的數組中獲取角色
cartoon = doraemon[pageControl.currentPage]
}
// 使用所選角色的信息更新名字標籤和圖片視圖
nameLabel.text = cartoon.name
picImageView.image = UIImage(named: cartoon.pic)
}

// 視圖加載時調用的函數
override func viewDidLoad() {
super.viewDidLoad()
// 當視圖加載時設置默認圖片和名字
picImageView.image = UIImage(named: "海綿寶寶")
nameLabel.text = "海綿寶寶"
}

// 當下一個按鈕被點擊時調用的IBAction函數
@IBAction func nextButton(_ sender: Any) {
// 將Page控制器的當前頁面索引加1
pageControl.currentPage += 1
// 調用函數以更新顯示的角色
changeImage()
}

// 當上一個按鈕被點擊時調用的IBAction函數
@IBAction func preButton(_ sender: Any) {
// 將Page控制器的當前頁面索引減1
pageControl.currentPage -= 1
// 調用函數以更新顯示的角色
changeImage()
}

// 當Page控制器的值發生變化時調用的IBAction函數
@IBAction func pageControl(_ sender: Any) {
// 調用函數以更新顯示的角色
changeImage()
}

// 當分段控制器的值發生變化時調用的IBAction函數
@IBAction func segmentedControl(_ sender: Any) {
// 將Page控制器的當前頁面索引重置為0
pageControl.currentPage = 0
// 調用函數以更新顯示的角色
changeImage()
}

}

Github:

--

--