2015-01-02 103 views
0

我想推到不同的視圖,當用戶選擇一個表格單元格,當我到達它將推動的位置時,它會引發錯誤。Exc_Bad_Instruction當使用navigationController PushViewController

這裏的特殊情況是我在同一個UIViewController下工作了兩個帶有tableViews的UIViews。結果,UIView和TableDelegates在他們自己的類中。

任何建議,非常感謝。

import Foundation 
import UIKit 
import CoreData 

class FavoritesViewController: UIViewController { 

//MARK: - UIViewController Delegates 
override func viewWillAppear(animated: Bool) {} 
} 


//MARK: - Lenders Table View Delegates 
class FavoritesLenderViewController: UIView, UITableViewDelegate, UITableViewDataSource { 

let favoritesViewController = FavoritesViewController() 
let lenderDetailsViewController = LenderDetailsViewController() 

var lenders = Array<Lenders>() 
var lenderUserComments = Array<LenderUserComments>() 
let lendersModel = LendersModel() 

//MARK: View Parameters 
@IBOutlet weak var favoriteLendersTableView: UITableView! 

// Equivalent to viewWillAppear for a subclass. 
override func willMoveToSuperview(newSuperview: UIView?) { 
    self.lenders = lendersModel.readLenderData() as Array 

    // Reload data (for when the user comes back to this page from the details page.) 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     self.favoriteLendersTableView.reloadData() 
    }) 
} 


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    var favoritesViewController = FavoritesViewController() 
    return self.lenders.count 
} 



// On selecting, send variables to target class. 
func tableView(tableView: UITableView!, didSelectRowAtIndexPath path: NSIndexPath!) { 

    // Setup what segue path is going to be used on selecting the row as set the type as the class for the view your going to. 
    let lenderDetailsViewController = self.favoritesViewController.storyboard?.instantiateViewControllerWithIdentifier("LendersDetailsView") as LenderDetailsViewController 

    // Get the lenderId from the selected path.row and put the values to the variables in the target class. 
    let lendersNSArray = lenders as NSArray 
    lenderDetailsViewController.lenderIdPassed = lendersNSArray[path.row].valueForKey("lenderId") as String! 

    // tell the new controller to present itself 
// BREAKS HERE : EXC_BAD_INSTRUCTION code=EXC_I386_INVOP 
    lenderDetailsViewController.navigationController?.pushViewController(lenderDetailsViewController, animated: true) 

} 

....//additional table delegates 
} 

回答

0

您不會自己推新視圖控制器。試試這個:

self.navigationController?.pushViewController(lenderDetailsViewController, animated: true) 
+0

感謝您的快速回復甦拉傑, 因爲「FavoritesLenderViewController」沒有一個名爲「navigationController」成員,我不能使用自我。 該成員似乎存在於UIViewController中,它是一個單獨的類,我將其設置爲在類「FavoritesLenderViewController」的頂部使用。在下面調用它會引發同樣的錯誤。 self.favoritesViewController.navigationController?.pushViewController(lenderDetailsViewController,animated:true) –

+0

單擊界面構建器中的第一個視圖控制器,並執行編輯器>嵌入>導航控制器。現在你有了nacigationController屬性 –

相關問題