初學 IOS,一個簡單的換頁功能一直搞不定
App 一進來是右邊的 MainViewController(對到 Main.storyBorad 白色背景),
想要點了按鈕進到左邊 HomeViewController(對到 Home.storyBorad 藍色背景),
但是點了之後只出現半透明的遮罩(最左邊模擬器的畫面
附上兩個 ViewController 程式碼
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var testBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loaaading the view.
}
@IBAction func itemClick(_ sender: UIButton) {
print("itemClick")
let home = HomeViewController.init()
self.present(home, animated: true, completion: nil)
}
}
import UIKit
class HomeViewController: UIViewController {
@IBOutlet weak var homeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("HomeViewController ViewDidload")
}
}
我在 HomeViewController viewDidLoad 印 Log 是有東西的,代表有進去
再看 Home.storyBorad
右上角的 class 對到 HomeViewController
這樣應該也是有把 Home.storyBorad 和 HomeViewController 關聯起來
為什麼沒有畫面 求解
這有兩種做法
code present
跳轉storyBorad
直接控制跳轉相信應該是希望有圖形化介面
所以新增兩個storyBorad
這邊簡單講解一下跳轉
如果你要寫Code
下去跳轉
又希望ViewController有圖形化介面可以拉物件
可以再新增ViewController畫面
打勾新增Xib
這樣也是可以使用介面
寫法跟你的一樣就可以了
直接可以跳轉過去圖形化介面在xib裡面操作
就可以簡單顯示
@IBAction func clickBtn(_ sender: Any) {
self.present(NewViewController(), animated: true, completion: nil)
}
Demo
如果你想storyBorad跳到storyBorad有點奇怪storyBorad裡面本來就是可以融入很多ViewController
這邊也是簡易教學
我怕你看不懂就是storyBorad有兩個ViewController
你拉好的ViewController是沒靈魂的
可以將它填入
你想要的class
名稱
將你原來的Button 按著鍵盤control拉一條到新的ViewController
然後使用show
就可跳轉了
Demo
這兩種方式都可以跳轉
也可以使用自己新增的ViewController裡面的程式碼
Demo
懶得寫的話 我寫好了直接下載看吧
Github:
https://github.com/Bgihe/PresentTest
badgameshowtw
將目標頁面modalPresentationStyle這個屬性改成fullScreen即可
感謝 學到一招筆記筆記
modalPresentationStyle該不會是iOS 13後新增的參數
這樣我就要版控去調整了
badgameshowtw
這個並不是iOS 13後新增的屬性。
而是原本的automatic屬性的預設變成不是fullscreen了。
安安你好,我也是 iOS 新手,可能解決不了你的問題 XD(留給後面的高手)
但你想跨 Storyboard 換頁的話可以嘗試使用 Storyboard Reference:
Reference 選 Home 那個 Storyboard
設置 Seque 及 identifier
按下 Button 裡的程式碼
Demo
現在是
MainViewController 在 Main.storyboard 裡
HomeViewController 在 Home.storyboard 裡
請先改成
MainViewController 和 HomeViewController 都在 Main.storyboard 裡
再看看結果如何
一般來說一個 app 只需要一個 storyboard (頂多加一個 launch.storyboard)
我在想是呼叫storyboard中的viewController出錯吧!
我這個code是在有navigation下的寫法。
如果是present你改成present的寫法就行了。
@IBAction func nextPage(_ sender: UIButton) {
let sb = UIStoryboard(name: "Main", bundle: nil)
let destination: DetailVC = sb.instantiateViewController(withIdentifier: "DetailVC") as! DetailVC
self.navigationController?.pushViewController(destination, animated: true)
}
記得內頁面要如這樣設置indentity的storyboard ID