2015-08-13 82 views
1

我在嘗試從父視圖控制器訪問我的.xib文件中的元素時遇到問題。我的代碼如下:無法在父文件中設置.xib文件中的標籤文本 - Swift

GraphScrollViewController.swift

class GraphScrollViewController: UIViewController { 

    var graphScrollMenu: CAPSPageMenu? 
    var controllerArray: [UIViewController] = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var weekViewController : RecentWeekGraphViewController = RecentWeekGraphViewController(nibName: "RecentRulesWeekGraphViewController", bundle: nil) 
     weekViewController.title = "Week" 
     controllerArray.append(weekViewController) 

     var monthViewController : RecentMonthGraphViewController = RecentMonthGraphViewController(nibName: "RecentMonthGraphViewController", bundle: nil) 
     monthViewController.title = "Month" 
     controllerArray.append(monthViewController) 

     var parameters: [CAPSPageMenuOption] = [ 
      .ScrollMenuBackgroundColor(UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0)), 
      .ViewBackgroundColor(UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0)), 
      .SelectionIndicatorColor(UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1)), 
      .BottomMenuHairlineColor(UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0)), 
      .UnselectedMenuItemLabelColor(UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0.5)), 
      .MenuItemFont(UIFont(name: "Avenir-Book", size: 15.0)!), 
      .MenuHeight(40.0), 
      .MenuItemWidth(90.0), 
      .CenterMenuItems(true) 
     ] 

     graphScrollMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) 
     self.view.addSubview(graphScrollMenu!.view) 
    } 

} 

RecentWeekGraphViewController.swift

class RecentWeekGraphViewController: UIViewController { 

    @IBOutlet weak var xibTestLabel: UILabel! 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

} 

當我嘗試使用設置從GraphScrollView.swift的xibTestLabel文本weekViewController.xibTestLabel.text =「一些文字「我得到:

fatal error: unexpectedly found nil while unwrapping an Optional 

我的網點全部似乎連接正確。

由於

+0

你正在使用哪個iOS SDK/Xcode來構建應用程序? –

+0

你是否與monthViewController有同樣的問題? –

+0

你究竟在哪裏試圖訪問'GraphScrollViewController'中的'xibTestLabel'? – hennes

回答

0

在Xcode7測試4. 測試創建字符串變量和從外部分配的值,並將其設置在viewDidLoad中

var weekViewController : RecentWeekGraphViewController = RecentWeekGraphViewController(nibName: "RecentRulesWeekGraphViewController", bundle: nil) 
     weekViewController.title = "Week" 
weekViewController.labeltext = "Title" 

在RecentWeekGraphViewController.swift

var labeltext: String! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
self.labelTitle.text = labeltext 
     // Do any additional setup after loading the view. 
    } 

問題是IBOutlet在呈現視圖控制器時連接。如果你想直接訪問IBOutlet,你可以在presentViewController裏面做完成處理程序

self.presentViewController(weekViewController, animated: true, completion: {   weekViewController.labelTitle.text = "title two" 
}); 
+0

沒有。我重命名了一些東西,但錯過了這一個。仍然導致相同的問題。我可以運行myMethod函數,但不能更改標籤文本。 – puks1978

+0

@ puks1978更新了答案 –