2016-02-27 41 views
1

我正在將數據從一個類傳遞到另一個類,並且當我斷點並查看控制檯時,我收到了無值的值。這些值如何變爲零?

這是價值觀的課,我想這些價值傳遞給該類viewc

func viewControllerAtIndex(index: Int) -> viewc { 
    if ((self.namepage.count == 0) || (index >= self.namepage.count) { 
     return viewcard()   
    } 

    var vc: viewc = self.storyboard?.instantiateViewControllerWithIdentifier("ItemController") as! viewc 

    vc.imageFile = self.pageImages[index] //not nil 
    vc.cTitle = self.namepage[index]  //not nil 
    vc.nTitle = self.numberpage[index] //not nil 
    vc.pageIndex = index 
    vc.getArray() 

    return vc 
} 

這個類是我想將數據傳遞到類。

class viewc: UIViewController{ 
    var pageIndex: Int! 
    var cTitle: String! 
    var imageFile: String! 
    var nTitle: String! 

    @IBOutlet weak var imagen: UIImageView! 
    @IBOutlet weak var name: UILabel! 
    @IBOutlet weak var number: UILabel! 

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

    func getArray() { 
     self.imagen.image = UIImage(named: self.imageFile)//imageFile is nil 
     self.name.text = self.cTitle//cTitle is nil 
     self.number.text = self.nTitle//nTitle is nil 
    } 
} 
+0

函數應該看起來像這樣。 –

+0

「ItemController」是您的目標viewController的名稱? –

+0

所以我有一個頁面視圖控制器和ItemController是viewController與頁面中的實際對象的故事板ID,所以是它是目標viewController。 – stackerleet

回答

-2

函數應該看起來像這樣。現在

func viewControllerAtIndex(index: Int) -> UIViewController? 
{ 
    let vc = storyboard?.instantiateViewControllerWithIdentifier (pagesArray[index]) return vc 
} 
+0

這是什麼? :p – Eendje

0
func viewControllerAtIndex(index: Int) -> ViewC { 
    var vc = self.storyboard?.instantiateViewControllerWithIdentifier("ItemController") as! ViewC 

    vc.imageFile = self.pageImages[index] 
    vc.cTitle = self.namepage[index] 
    vc.nTitle = self.numberpage[index] 
    vc.pageIndex = index 

    vc.testProperties() 

    return vc 
} 

class ViewC: UIViewController{ 
    var pageIndex: Int! 
    var cTitle: String! 
    var imageFile: String! 
    var nTitle: String! 

    @IBOutlet weak var imagen: UIImageView! 
    @IBOutlet weak var name: UILabel! 
    @IBOutlet weak var number: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imagen.image = UIImage(named: imageFile) 
     name.text = cTitle 
     number.text = nTitle 
    } 

    // This will crash if one of them is nil 
    func testProperties() { 
     print("pageIndex: \(pageIndex)") 
     print("cTitle: \(cTitle)") 
     print("imageFile: \(imageFile)") 
     print("nTitle: \(nTitle)") 
    } 
} 

您ViewC將正確設置。注意,您只能在加載視圖後訪問您的IBOutlet。如果您需要在視圖加載之前訪問插座,則需要執行其他操作。

+0

如果我採用此路線,imageFile,cTitle和nTitle將不會 – stackerleet

+0

這取決於您訪問它們的位置。不知何故,我懷疑你沒有訪問'ViewC'的同一個實例。 – Eendje

+0

我試過了,當我做我最初的方法時,cTitle,nTitle和imagen都有價值,但是當我採取你的方法時,一切都是零。 – stackerleet