Swift:如何将内部类数组属性设置为UITableViewCells?

时间:2016-12-29 10:54:49

标签: ios swift oop

我想将内部array个对象设置为UITableViewCell 这是我的班级:

import Foundation
class AvailableCoursesInitialResponseModel: BaseObject {
    var availableCourses : [CoursesModel]!
}

class CoursesModel: BaseObject{
    var categoryName : String!
    var categoryData : [categoryDataModel]!
}

class categoryDataModel: BaseObject{
    var classInfo : classInfromationModel!
    var classList : [classListDetailModel]!
}

class classInfromationModel: BaseObject{
    var displayText : Bool!
    var updatedBy : Int!
    var endDate : String!
    var groups : String!
}

class classListDetailModel : BaseObject{
    var courseFee: String!
    var fromTime : NSDate!
    var courseDate : NSDate!
    var location : String!
    var className : String!
    var registration : String!
    var courseCalendarId : Int!
    var toTime : NSDate! 
}

我已将自定义UITableViewCell设为:

import UIKit

class AvailableCoursesSecondViewControllerTableViewCell: UITableViewCell {

    var model : classListDetailModel!
    @IBOutlet weak var lblDecription: UILabel!
    @IBOutlet weak var lblClassName: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }
}

这是包含UITableView的视图控制器:

import UIKit 
class AvailableCoursesSecondViewController:   
        UIViewController,UITableViewDelegate{
     @IBOutlet weak var tableView: UITableView!
    var myDataSource = AvailableCoursesInitialResponseModel()
    override func viewDidLoad(){
        self.tableView.reloadData()
    }
       func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell: AvailableCoursesSecondViewControllerTableViewCell = (NSBundle.mainBundle().loadNibNamed("AvailableCoursesSecondViewControllerTableViewCell", owner: self, options: nil).first as? AvailableCoursesSecondViewControllerTableViewCell)!
          let model = myDataSource.availableCourses[indexPath.row]

        Here i want to access the properties of **classListDetailModel** 
        my custom cell.

        cell.backgroundColor = kColorLightGray_DW
        return cell   
    }

如何在classListDetailModel子类中设置UITableViewCell的属性,或者如何访问classListDetailModel的属性。

2 个答案:

答案 0 :(得分:2)

我不确定您的用户界面以及处理indexPath的方式,但您可以使用来自model的{​​{1}}来访问您的列表项。

搜索@ myDataSource.availableCourses[indexPath.row] - > CoursesModel - > categoryDataModel财产。

这是classListarray个对象,因为正如我在开头提到的那样,我不确定classListDetailModel,它认为它们引用了indexPath您可以使用availableCourses进行迭代以逐个查找项目。

forEach

答案 1 :(得分:1)

当您传递给当前视图控制器时,您可以传递ArrayIndex以及它。我的意思是,

在actionMethod中设置此方法

let model = myDataSource.availableCourses[indexPath.row]
 // Instantiate SecondViewController
                let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
    //pass the model to your DataSource
    secondViewcontroller.myDataSource = model
     self.navigationController?.pushViewController(secondViewController, animated: true)

并在您的secondViewController中设置数据源

var myDataSource : CoursesModel!

现在您可以在单元格中设置属性,如:

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

        let cell: AvailableCoursesSecondViewControllerTableViewCell = (NSBundle.mainBundle().loadNibNamed("AvailableCoursesSecondViewControllerTableViewCell", owner: self, options: nil).first as? AvailableCoursesSecondViewControllerTableViewCell)!
          let model = myDataSource.classList[indexPath.row]
 cell.lblClassName.text = model.className
      cell.lblDescription.text = //set your description from the model.
  cell.backgroundColor = kColorLightGray_DW
        return cell   
    }

我希望你明白我的意思。如果它不起作用,请随时发表评论。