1、我沒有用storyboard布局侠姑,是在delegate里面手寫代碼創(chuàng)建的创橄,代碼如下
在其中遇到一些小困難,因為初學(xué)swift莽红,還沒有搞明白妥畏?
和!
的用法安吁,因此被坑了一大會兒醉蚁。初開始是這樣寫的
由于在
self.window? = UIWindow...
這句話中用了?導(dǎo)致window
一直為nil
鬼店,并沒有創(chuàng)建出來馍管,所有在模擬器中看到的是大黑屏。這里說一下原因薪韩,先看下面代碼
當(dāng)我們在聲明一個變量的時候确沸,如果不給其初始值,則會報錯俘陷。
類似這種寫法
var stringValue:String //error: variable 'stringValue' used before being initialized
無論是變量還是常量在聲明時是需要給其初始值的罗捎,如果你不想給其初始值,則需要用到Option
了拉盾,在這里我簡單的理解為桨菜?
,其實Optional的原理在swift中的捉偏?和倒得!
一旦聲明為Optional的,如果不顯示的賦值就會有個默認(rèn)的值nil
夭禽,因此上面的window
為何為nil
也得到了解釋霞掺。
那?
該如何用呢讹躯?
在看文檔中菩彬,有提到,使用潮梯?得時候需要在具體的操作骗灶,比如調(diào)用方法、屬性秉馏、下標(biāo)索引等前面加上一個耙旦?,其意思是詢問是否響應(yīng)后面這個方法萝究,和oc中的isResponseToSelector
有些類似免都,如果是nil
值锉罐,則不能響應(yīng)后面的方法,反之執(zhí)行琴昆。
氓鄙!是表示前面的值肯定不為nil
馆揉,直接就能調(diào)用后面的方法业舍,而如果值一旦為nil
,則會crash掉
2升酣、
在XY_MainTabBarController
中定義一個類型屬性舷暮,代碼如下
其中碰到的問題是關(guān)于NSClassFromString
在swift中不起作用,還有獲得到對應(yīng)控制器的名字如何實例化出來噩茄?
解決方法
1下面、NSClassFromString
不起作用
在你傳入的str中的類聲明為
@objc(str)
2、如何實例化出對應(yīng)的控制器
可以通過vc.self.init()
創(chuàng)建出來,當(dāng)然在使用該方法的前提是要聲明vc
的類型是viewController
例如這樣的
這是demo地址绩聘,喜歡的給個star哈
另外關(guān)于如何將自己項目上傳到的Github沥割,你可以點擊這里,在此感謝??
?iOS_小喬 聲明本人博客由csdn轉(zhuǎn)移到簡書
若是喜歡麻煩點個贊咯凿菩,后續(xù)還會有更新~
如果有不懂的地方机杜,你可以在下面評論,我們一起討論哈