2015-06-01 2 views
2

Итак, у меня было 2 экранных приложения, все работающие, основной ViewController и еще один ViewController, который отбирается нажатием кнопки. Все это прекрасно работает и до сих пор.Черный экран при переходе на UITableViewController в swift

Затем я создал новый ViewController, добавил к нему TableView, встроил контроллер навигации и установил таблицу. Я создал для него segue, что происходит при нажатии в текстовом поле. Все работает отлично, но иногда, когда он должен переходить к TableView VC, он просто показывает черный экран. Ошибок не сообщается, экран просто черный, и он никогда не меняется. Иногда, однако, все в порядке. Кажется, это появилось после того, как я каким-то образом изменил таблицу. Что еще более раздражает, когда он работает на симуляторе, если я затем попытаюсь запустить сборку на своем устройстве (iPhone 6), на экране появится черный экран. Я действительно не знаю, какой код будет полезен, чтобы показать вам, поэтому, пожалуйста, спросите, хотите ли вы их увидеть. Я поставлю код на VC TableView.

import UIKit 

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UINavigationBarDelegate { 

@IBOutlet private weak var tableView: UITableView! 

var countryPicker = ["Colombia", "England", "France", "Germany", "Brazil", "Austria", "Spain", "Australia", "USA", "Berlin", "Thailand", "Northern Ireland", "New Zealand", "Hawaii", "Switzerland", "Sweeden", "Finland", "Turkey", "Russia", "Netherlands", "Japan"] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.rowHeight = 50 
    self.tableView.backgroundView = UIImageView(image: UIImage(named: "TblBackground")) 

} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return countryPicker.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell 

    if (indexPath.row % 2 == 0) { 

     cell.backgroundColor = UIColor.clearColor() 

    } else { 

     cell.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.2) 

     cell.textLabel?.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.0) 

    } 

    var imageView: UIImage! = UIImage(named: "Australia") 
    cell.imageView?.image = imageView 
    cell.imageView?.highlightedImage = UIImage(named: "Australia1") 

    cell.textLabel?.text = countryPicker[indexPath.row] 

    cell.textLabel?.textColor = UIColor.whiteColor() 

    return cell 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    var cell = tableView.cellForRowAtIndexPath(indexPath) 
    cell!.accessoryType = UITableViewCellAccessoryType.Checkmark 
    cell?.textLabel!.textColor = UIColor.blueColor() 

} 

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 

    var cell = tableView.cellForRowAtIndexPath(indexPath) 
    cell!.accessoryType = UITableViewCellAccessoryType.None 
    cell?.textLabel!.textColor = UIColor.whiteColor() 

} 

} 

благодарит за любую помощь!

ответ

0

По-прежнему нет логической причины, почему это произошло, но полная очистка папок сборки прекратила это. Так что, если у Вас есть один и тот же вопрос, попробуйте следующее:

  1. Когда в Xcode, перейдите на верхней панели и выберите «Продукт»
  2. Когда появится список, вы увидите опцию «Очистить» ,
  3. Удерживая клавишу альта и параметр изменится на «Чистую папку сборки» «папка Clean сборки»
  4. CLICK
+0

Имея эту проблему в Objective C тоже. Уборка не всегда помогает. Большая боль. – Chris

+1

@Chris У меня была эта проблема, когда я загрузил MFMailComposeViewController в viewDidLoad контроллера представления, с которого я переходил. Я решил это, переместив весь код, связанный с MFMailComposeViewController (который вызывает вид электронной почты), из viewDidLoad в viewDidAppear. Если вы делаете какую-либо другую загрузку вида в viewDidLoad контроллера вида, от которого вы переходите, переместите его в viewDidAppear! – owlswipe

+0

@owlswipe Спасибо за это. Я все еще не понимаю, почему это должно быть в ViewDidAppear, но это устранило проблему. Кто-нибудь видел документацию, объясняющую это? – Cathal