Hallo,
ich habe ein Problem mit dem ausführen einer Funktion aus einer anderen Klasse/ Datei heraus.
und zwar, habe ich eine Datei viewController in welcher sich eine Funktion zum dynamischen erstellen eines TableView befindet.
rufe ich diese Funktion nun innerhalb dieser Klasse über meinen Button auf klappt alles so wie es soll und der tableview wird erstellt.
rufe ich diese Funktion allerdings von außerhalb aus meiner anderen Klasse/datei auf, bringt er mir immer einen Fehler
was ich nun nicht begreife warum ich nun plötzlich einen value mit nil habe. Laut Compiler hat der button nil. Aber aus der anderen Klasse heraus hatte alles funktioniert und nix mit value nil.
Hier mal die 2 Dateien
Alles anzeigen
und die 2. aus der es dann nicht mehr funktioniert
Alles anzeigen
was kann ich da tun, dass es funktioniert?
PS: der tableView soll im ViewController angezeigt werden. Die 2. datei ist mit einem Uopoverview verknüpft. in diesem befindet sich der button zum aufrufen der createTableView-Funktion.
ich habe ein Problem mit dem ausführen einer Funktion aus einer anderen Klasse/ Datei heraus.
und zwar, habe ich eine Datei viewController in welcher sich eine Funktion zum dynamischen erstellen eines TableView befindet.
rufe ich diese Funktion nun innerhalb dieser Klasse über meinen Button auf klappt alles so wie es soll und der tableview wird erstellt.
rufe ich diese Funktion allerdings von außerhalb aus meiner anderen Klasse/datei auf, bringt er mir immer einen Fehler
was ich nun nicht begreife warum ich nun plötzlich einen value mit nil habe. Laut Compiler hat der button nil. Aber aus der anderen Klasse heraus hatte alles funktioniert und nix mit value nil.
Hier mal die 2 Dateien
Quellcode
- import UIKit
- class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, UITableViewDataSource, UITableViewDelegate {
- @IBOutlet weak var addButton: UIButton!
- var tableView: UITableView! = UITableView()
- //***********************************************
- override func viewDidLoad() {
- super.viewDidLoad()
- }
- //***********************************************
- func createTableView() {
- println("createTableView-Funktion aufgerufen")
- tableView.frame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height - self.addButton.frame.height - 20)
- tableView.delegate = self
- tableView.dataSource = self
- tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
- tableView.backgroundColor = UIColor(red: 255, green: 255, blue: 255, alpha: 0)
- self.view.addSubview(tableView)
- }
- //***********************************************
- func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return 7
- }
- func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
- return "Section \(section)"
- }
- func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
- cell.backgroundColor = UIColor(red: 255, green: 255, blue: 255, alpha: 0.3)
- cell.textLabel?.text = "Row \(indexPath.row)"
- return cell
- }
- func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
- println("Row \(indexPath.row) ausgewählt")
- }
- //***********************************************
- //--> addButton Funktion
- @IBAction func addNewEntry(sender: AnyObject) {
- //createTableView()
- //Popover
- let storyboard : UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
- var popNewEntryController: PopNewEntryViewController = storyboard.instantiateViewControllerWithIdentifier("PopNewEntryViewController") as! PopNewEntryViewController
- popNewEntryController.modalPresentationStyle = .Popover
- popNewEntryController.preferredContentSize = CGSizeMake(300, 200)
- let popoverController = popNewEntryController.popoverPresentationController
- popoverController?.permittedArrowDirections = .Down
- popoverController?.delegate = self
- popoverController?.sourceView = sender as! UIButton
- popoverController?.sourceRect = CGRect(x: sender.size.width / 2, y: -2, width: 1, height: 1)
- presentViewController(popNewEntryController, animated: true, completion: nil)
- }
- //***********************************************
- func adaptivePresentationStyleForPresentationController(
- controller: UIPresentationController) -> UIModalPresentationStyle {
- return .None
- }
- //***********************************************
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- //***********************************************
- }
Quellcode
- import UIKit
- class PopNewEntryViewController: UIViewController {
- //Outlets
- //Properties
- //***********************************************
- override func viewDidLoad() {
- super.viewDidLoad()
- }
- //***********************************************
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
- //***********************************************
- //***********************************************
- //***********************************************
- //Actions
- @IBAction func cancelButton(sender: AnyObject) {
- }
- @IBAction func acceptButton(sender: AnyObject) {
- }
- @IBAction func thisWeekButton(sender: AnyObject) {
- println("thisWeekButton gedrückt")
- ViewController().createTableView()
- }
- @IBAction func nextWeekButton(sender: AnyObject) {
- }
- }
PS: der tableView soll im ViewController angezeigt werden. Die 2. datei ist mit einem Uopoverview verknüpft. in diesem befindet sich der button zum aufrufen der createTableView-Funktion.