créer un UITableViewController par programmation dans Swift
J'essaie, comme le titre le dis, mettre en place un UITableViewController par programmation. Après quelques heures de l'essayer j'espère que quelqu'un pourra m'aider. Et, oui, je hve vérifié d'autres posts sur ce sujet:
import UIKit
class MainViewController: UITableViewController {
init(style: UITableViewStyle) {
super.init(style: style)
//Custom initialization
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
//#pragma mark - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
return 1
}
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
var cell = tableView?.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
if !cell {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
}
cell!.textLabel.text = "test"
return cell
}
}
et l'appDelegate ressemble à ceci:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainViewController: UITableViewController = MainViewController(style: UITableViewStyle.Plain)
let navigationController: UINavigationController = UINavigationController()
navigationController.pushViewController(mainViewController, animated: false)
self.window!.rootViewController = navigationController
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
return true
}
Fonctionner le programme, mais dès qu'il fait, j'obtiens l'erreur suivante:
fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'HelloWorld.MainViewController'
Je modifie ensuite le MainViewController(style: UITableViewStyle.Plain)
à MainViewController(nibName: nil, bundle: nil)
mais puis-je obtenir suivantes erreur de syntaxe: Extra argument 'bundle' in call
Toute aide serait grandement appréciée
Comment êtes-vous la définition de la MainViewController classe?
Quelle est la définition pour MainViewController? Êtes-vous hériter directement de UITableViewController? Définissez-vous tout initialisers?
J'ai mis à jour le code
Quelle est la définition pour MainViewController? Êtes-vous hériter directement de UITableViewController? Définissez-vous tout initialisers?
J'ai mis à jour le code
OriginalL'auteur Nilzone- | 2014-06-07
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant une sous-classe de UITableViewController avec pas de problèmes, l'utilisation de l' (nibName:bundle:) la forme, mais je l'ai remplacé dans mon sous-classe. J'ai essayé de remplacer mon sous-classe avec un standard UITableViewController, et il fonctionnait encore très bien. Êtes-vous en surchargeant un init(...) la méthode dans votre sous-classe?
assurez-vous que vous êtes en appelant un des hérité init(...) la méthode à partir de votre propre initialiseur.
Swift fait hérité des initialiseurs inaccessibles pour les clients de votre classe dérivée lorsque vous ajoutez un désigné d'initialiseur. Elle ressemble privé de l'héritage en C++ où les hérité des méthodes/données sont implicitement déplacé vers le "privé" de la classe de la section. La raison en est simple: si il y a une coutume initialiseur de votre classe nécessite probablement ce initialiseur de construire classe "invariant". Mais il y a un bug: si vous créer une classe dérivée de UITableViewController et ajouter des initialiseur qui appelle super.init(style:) il échouera avec l'utilisation de mises au placard de l'initialiseur 'init(nibName:bundle:)'
OriginalL'auteur Ben Gottlieb
Dans l'AppDelegate ou l'endroit d'où vous appelez la TableViewController:
Dans le UITableViewController (en supposant qu'aucun personnalisé TableViewCell mise en œuvre):
Pour un exemple complet: visite: https://github.com/ericcgu/EGStormTracker
OriginalL'auteur ericgu
Je viens de retrait
et puis init comme ceci:
OriginalL'auteur Dennis