gpt4 book ai didi

ios - 在没有 Storyboard的情况下以编程方式加载 UITableViewController

转载 作者:行者123 更新时间:2023-11-29 01:01:29 24 4
gpt4 key购买 nike

我试图在不使用 Storyboard的情况下从 AppDelegate 启动一个 UITableViewController 作为 RootController。

这是我的 TasksTableViewController:

class TasksTableViewController: UITableViewController {

override func viewDidLoad() {

super.viewDidLoad()

}

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

nib 文件名为 TasksTableViewControllerTasksTableViewController 的 View 属性连接到 nib 上的 UITableView 控件。

AppDelegate 看起来像这样:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

window = UIWindow(frame: UIScreen.mainScreen().bounds)

let controller = TasksTableViewController(nibName: "TasksTableViewController", bundle: nil)
window?.rootViewController = controller

window?.makeKeyAndVisible()
return true
}

我只看到黑屏。 UITableView 控件没有数据绑定(bind),但我希望看到一个空的 uiTableview 控件,而不是黑屏。我做错了什么?

更新:

这是让它工作的代码:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)


let controller = TasksTableViewController(nibName: "TasksTableViewController", bundle: nil)

if let window = self.window {
window.backgroundColor = UIColor.blueColor()
window.rootViewController = controller
window.makeKeyAndVisible()
}

return true
}

最佳答案

尝试这样的事情:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let controller = TasksTableViewController(nibName: "TasksTableViewController", bundle: nil)

if let window = self.window{
window.rootViewController = controller
}
}

在将其添加到窗口之前,放置断点以确认其已正确创建。此外,没有理由在启动时实例化一个新窗口,所以不要那样做。此时通过在 viewDidAppear 中放置一个断点来仔细检查 VC 是否确实显示。考虑使 TasksTableViewController 成为 UIViewController 的子类,其中有一个 TableView ,因为这是常见的做法。通常不建议对 UITableView 进行子类化,也不建议将其用作 ViewController。如果您在要使用的 xib 中布置了自定义 tableview,则可以在 Root View Controller 上的 view did load 或 init 中实例化一个,将其添加为 subview ,并将框架设置为覆盖整个屏幕。我强烈推荐这种方法。

关于ios - 在没有 Storyboard的情况下以编程方式加载 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36946009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com