2014年11月29日
Posted by 屋台ブルー at
2014年11月29日00:00 Comment(0)
Swiftで遊ぼう! - 141 - iPhoneアプリ開発の教科書 UILabel2
Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】の続き。
UILabelクラスにはオプショナルなプロパティが存在するため、インスタンス生成時に「?」か「!」をつけなければならない。「?」はnilの存在をそのまま活かしてオプショナルな扱いを続けなければならないから値を使うために必ず強制アンラップ「!」が必要になる。
Main.storyboardにラベルを2つ並べてみよう。textの指定を「Label1」と「Label2」に変更しておく。
次にAssistant Editorを表示させてから、ViewControllerクラスの1番上部の所に、Label1を「control + ドラッグ」させて青いラインを引く。ダイアログが表示されるんで、Nameに「labelFirst」と名前をつけてコネクト(connect)させる。これがインスタンス名になるんです。
すると@IBOutletという枕詞のついたクラスインスタンス、labelFirst宣言が作られます。このクラスにはオプショナルなプロパティが含まれているんで、「!」か「?」を使う必要があるけど、デフォルトでは「!」を使って強制アンラップした形になっている。どうもこのあたりの扱いがイマイチ理解できていないので実験的に「?」にしてみた。
もう一つ、Label2には「labelSecond'」と名前をつける。
例えば、ViewControllerの中のコードを以下のようにしてやると...
class ViewController: UIViewController {
@IBOutlet var labelFirst: UILabel!
@IBOutlet var labelSecond: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
var textFirst = labelFirst.text
labelSecond.text = textFirst
}
これは問題なくビルドされて以下のような表示になる。 Label1もLabel2も同じLabel1に表示されるのは分かりますよね。ここまでは理解できていると思います。
ちょっと実験的に「!」を「?」に変えてやると...
class ViewController: UIViewController {
@IBOutlet var labelFirst: UILabel?
@IBOutlet var labelSecond: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
var textFirst = labelFirst.text
labelSecond.text = textFirst
}
ふふふふ、当然のようにランしてやると
じゃあどうすればいいんでしょうね。さあ、考えていこう。明日ね。
UILabelクラスにはオプショナルなプロパティが存在するため、インスタンス生成時に「?」か「!」をつけなければならない。「?」はnilの存在をそのまま活かしてオプショナルな扱いを続けなければならないから値を使うために必ず強制アンラップ「!」が必要になる。
Main.storyboardにラベルを2つ並べてみよう。textの指定を「Label1」と「Label2」に変更しておく。
次にAssistant Editorを表示させてから、ViewControllerクラスの1番上部の所に、Label1を「control + ドラッグ」させて青いラインを引く。ダイアログが表示されるんで、Nameに「labelFirst」と名前をつけてコネクト(connect)させる。これがインスタンス名になるんです。
すると@IBOutletという枕詞のついたクラスインスタンス、labelFirst宣言が作られます。このクラスにはオプショナルなプロパティが含まれているんで、「!」か「?」を使う必要があるけど、デフォルトでは「!」を使って強制アンラップした形になっている。どうもこのあたりの扱いがイマイチ理解できていないので実験的に「?」にしてみた。
もう一つ、Label2には「labelSecond'」と名前をつける。
例えば、ViewControllerの中のコードを以下のようにしてやると...
class ViewController: UIViewController {
@IBOutlet var labelFirst: UILabel!
@IBOutlet var labelSecond: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
var textFirst = labelFirst.text
labelSecond.text = textFirst
}
これは問題なくビルドされて以下のような表示になる。
ちょっと実験的に「!」を「?」に変えてやると...
class ViewController: UIViewController {
@IBOutlet var labelFirst: UILabel?
@IBOutlet var labelSecond: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
var textFirst = labelFirst.text
labelSecond.text = textFirst
}
ふふふふ、当然のようにランしてやると
じゃあどうすればいいんでしょうね。さあ、考えていこう。明日ね。