Когда мое приложение впервые запустилось, я хочу создать некоторые образцы данных, которые будут видеть новые пользователи. Я хотел бы, чтобы они начали уровень (возможно больше) в навигационном контроллере, например, так:Заполнение навигационного контроллера при первом запуске
tableViewController0 -> tvc1 (пользователь начинает здесь)
Изображение приложение отмечает, что имеет папки как ее верхний уровень навигации. Сначала вы можете сначала показать пользователю несколько примеров заметок в папке с образцом, а затем позволить ему вернуться позже и создать новые папки.
Моя мысль была, что я бы запустить метод в application didFinishLaunchingWithOptions
, что бы проверить для первого запуска (проверка/установив Bool
в NSUserDefaults
), а затем, если мы находимся в первом запуске, создать некоторые выборочные данные. Тогда я думал, что я мог бы просто создать каждый контроллер представления и установить мой UINavigationController
«S viewControllers
собственности, но я получаю эту ошибку:
'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
(Клетка определенно имеет идентификатор Cell
в раскадровке и работает, если я не» т создавать данные и просматривать контроллеры заранее)
Некоторые примеры кода из моей AppDelegate:.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// From Xcode's stock AppDelegate
// Override point for customization after application launch.
let splitViewController = self.window!.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
// Check for first launch, get back a sample object.
if isFirstLaunch == true {
let newObject = prepareFirstLaunch()
let tvc0 = TableViewController0()
tvc0.managedObjectContext = managedObjectContext
let tvc1 = TableViewController1()
tvc1.someObject = newObject
masterNavigationController.viewControllers = [tvc1, tvc0]
} else {
// this is moved from the stock AppDelegate down into this else statement.
let controller = masterNavigationController.topViewController as! TableViewController0
controller.managedObjectContext = self.managedObjectContext
}
return true
}
private func isFirstLaunch() -> Bool {
// return whether we're launching for the first time
}
private func prepareSampleObject() -> SomeObject {
/*
If we're launching for the first time
create someObject, create some other objects that are owned
by this object in CoreData, set up their relationships, etc.
*/
return someObject
}
есть еще один способ, которым я могу установить это, так что пользователь может перейти прямо в населенной на вместо того, чтобы начинать на верхнем уровне?