2015-05-11 2 views
0

Я написал код, который отлично работает в симуляторе, но не работает на устройстве. Я назначил 4 панели управления представлением на вкладке, а следующий код - для HomeScreen, который назначается в качестве первого контроллера представления на вкладке. Он падает в первой строке viewdidload().«Неустранимая ошибка: неожиданно найден nil во время разворачивания необязательного значения» при назначении диспетчеров просмотров на вкладку

, когда я удаляю все из viewdidload(), он работает.

class HomeScreen: UIViewController { 
    var tableView: UITableView! 
    @IBOutlet weak var imgLine:UIImageView! 
    @IBOutlet weak var btnActiveDeals:UIButton! 
    @IBOutlet weak var btnActiveClaims:UIButton! 
    @IBOutlet weak var btnNearByDeals:UIButton! 
    @IBOutlet weak var horizontalSpaceConstraint:NSLayoutConstraint! 
    @IBOutlet weak var tblMain:UITableView! 

    var mydeals : MyDealsViewController! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     btnActiveDeals.titleLabel?.adjustsFontSizeToFitWidth = true 
     btnActiveDeals.titleLabel?.minimumScaleFactor = 0.5 
     btnActiveDeals.autoresizesSubviews = true 

     btnActiveClaims.titleLabel?.adjustsFontSizeToFitWidth = true 
     btnActiveClaims.titleLabel?.minimumScaleFactor = 0.5 
     btnActiveClaims.autoresizesSubviews = true 

     btnNearByDeals.titleLabel?.adjustsFontSizeToFitWidth = true 
     btnNearByDeals.titleLabel?.minimumScaleFactor = 0.5 
     btnNearByDeals.autoresizesSubviews = true 

     tblMain.backgroundView = nil 
     tblMain.backgroundColor = UIColor.clearColor() 

    } 

Код для назначения главного экрана на вкладке приведен ниже.

let centerViewController1 = HomeScreen(nibName: "HomeScreen", bundle: nil) 
let centerViewController2 = HomeScreen(nibName: "HomeScreen", bundle: nil) 
let centerViewController3 = HomeScreen(nibName: "HomeScreen", bundle: nil) 
let centerViewController4 = HomeScreen(nibName: "HomeScreen", bundle: nil) 

tabBarController = UITabBarController() 
var controllers = [centerViewController1,centerViewController2,centerViewController3,centerViewController4] 
tabBarController.viewControllers = controllers 
tabBarController.tabBar.tintColor = UIColor.whiteColor() 

Прослушайте меня. Заранее спасибо.

+0

Используйте контрольные точки и посмотрите, какая строка возвращает эту ошибку. – Cesare

+0

Если вы используете раскадровку, почему вы создаете tabBarController = UITabBarController()? – Amit89

+0

@CeceXX ошибка находится на первой строке viewdidload .. btnActiveDeals.titleLabel? .adjustsFontSizeToFitWidth = true Это прекрасно работает в симуляторе, и как только я прокомментирую весь viewdidload, он идет дальше. есть ли проблема с распределением кнопок и табличного просмотра? –

ответ

0

Это не так, потому что в viewDidLoad, btnActiveDeals еще не запущен.

Причина: Способ инициализации контроллера вида.

Решение:

1- Если вы создали свой ViewController в раскадровке, пожалуйста, как создать его экземпляр ниже

if let vc = storyboard?.instantiateViewController(withIdentifier: "IdentifierDefinedInStoryboard") as? VC { 
     self.navigationController?.pushViewController(vc, animated: true) 
    } 

2- Если вы создали свой ViewController в XIb, пожалуйста, создать его экземпляр, как показано ниже

let centerViewController1 = CenterViewController() 

скажите, пожалуйста, если это поможет!

Смежные вопросы

 Смежные вопросы