이번 방학동안에는 뭘하면서 실력을 쌓아볼까 고민을 하다가
얼마 후에 있을 네이버 부스트캠프 지원과
Stanford Univercity 교수님께서 강의하신 iOS11 강의를 쭉 들어볼 생각입니다
해당 영상은 Youtube 내에도 있지만 아무래도 영문강의다 보니 힘들것 같더라구요
그래서 Edwith 에 있는 [스탠포드]Swift를 활용한 iOS11 앱 개발 www.edwith.org/swiftapp
위 강의가 한국어 자막과 더불어 간단한 요약내용이 있어 선택했습니다!
Chapter 1
✔︎ 목표
- 카드를 클릭하면 뒤집어지며, count 수가 증가된다!
- 여러개의 카드의 outlet, action을 묶어서 연결하자!
✔︎ 구현 내용
- 카드의 이미지들을 [String] 형식으로 미리 준비한다
- @IBoutlet var cardButtons: [UIButton]! 형식으로 여러개의 카드를 한 배열형태로 연결한다
- @IBAction func touchCard(_ sender: UIButton) 메소드에 여러개의 카드를 연결하여 cardButtons 내에 sender와 일치되는 index를 이용하여 해당 카드를 뒤집는 flipCard 메소드를 실행한다
- func flipCard 메소드에서는 이모티곤과 버튼을 받아와 이모티콘의 값에 따라 뒤집는 식으로 구현한다
✔︎ 새롭게 알게된 기능들
- didSet : var 변수의 값이 변화될 때 자동으로 메소드를 호출할 수 있는 기능이 있다는 것을 처음 알게 되었다!
var flipCount = 0 {
didSet { flipCountLabel.text = "Flips: \(flipCount)" }
}
- @IBoutlet var cardButtons: [UIButton]! 형식으로 여러개의 outlet들을 연결할 수 있다는 점은 알고있었으나, action에서 받아온 sender와 비교를 통한 index 접근방식은 처음 알게 되었다.
if let cardNumber = cardButtons.firstIndex(of: sender) {
print("cardNumber = \(cardNumber)")
}
✔︎ 동작 화면
✔︎ 전체 코드
import UIKit
class CP1_ViewController: UIViewController {
var flipCount = 0 {
didSet { flipCountLabel.text = "Flips: \(flipCount)" }
}
var emojiChoices: [String] = ["👻", "🎃", "👻", "🎃"]
@IBOutlet var cardButtons: [UIButton]!
@IBOutlet var flipCountLabel: UILabel!
@IBAction func touchCard(_ sender: UIButton) {
flipCount += 1
if let cardNumber = cardButtons.firstIndex(of: sender) {
print("cardNumber = \(cardNumber)")
flipCard(withEmoji: emojiChoices[cardNumber], on: sender)
} else {
print("chosen card was not in cardButtons")
}
}
func flipCard(withEmoji emoji: String, on button: UIButton) {
if(button.currentTitle == emoji) {
button.setTitle("", for: .normal)
button.backgroundColor = UIColor.orange
} else {
button.setTitle(emoji, for: .normal)
button.backgroundColor = UIColor.white
}
}
}
✔︎ 깃허브 : https://github.com/FreeDeveloper97/iOS_Stanford_Univ
'iOS 개발자 > iOS Stanford Univ' 카테고리의 다른 글
[iOS 스탠포드] Chapter3 (0) | 2021.07.07 |
---|---|
[iOS 스탠포드] Assignment 1 : Concentration (0) | 2021.07.05 |
[iOS 스탠포드] Chapter2 (0) | 2021.06.22 |