如何从swift中基于选项卡的视图控制器管理5个不同的表视图(和详细视图)?

时间:2015-01-14 18:22:06

标签: ios swift uitableview

换句话说,我正在寻找如何使用5选项卡基于选项卡的视图控制器,当我触摸一个选项卡时,我被带到一个表视图 - 静态数组 - 这将然后有一个详细视图控制器。

所以tab-table view-detail view。

我是swift的新手,所以我确定如何正确地说出这一点,但我想知道如何使用标签管理/添加多个表格视图到我的项目。我注册了在线iOS快速课程,但他们只涉及单视图应用程序。任何帮助或参考将不胜感激。

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

var taskArray:[TaskModel] = []


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    let task1 = TaskModel(task: "Study French", subTask: "Verbs", date: "04/14/2014")
    let task2 = TaskModel(task: "Eat Dinner", subTask: "Burgers", date: "01/14/2014")


    taskArray = [task1, task2, TaskModel(task: "Gym", subTask: "Leg Day", date: "01/14/2014")]

    tableView.reloadData()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "showTaskDetail" {
        let detailVC: TaskDetailViewController = segue.destinationViewController as TaskDetailViewController
        let indexPath =  self.tableView.indexPathForSelectedRow()
        let thisTask = taskArray[indexPath!.row]
        detailVC.detailTaskModel = thisTask
    }


}

//UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return taskArray.count
}

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

    let task = taskArray [indexPath.row]
    var cell: TaskCell = tableView.dequeueReusableCellWithIdentifier("myCell") as TaskCell

    cell.taskLabel.text = task.task
    cell.descriptionLabel.text = task.subTask
    cell.dateLabel.text = task.date

    return cell
}
//UITableViewDelegate

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    performSegueWithIdentifier("showTaskDetail", sender: self)

}

1 个答案:

答案 0 :(得分:0)

我认为你需要将这些问题分开来开始。

UITabControllerviewControllers。 UITabController中关联的每个UIViewController都可以拥有自己的实现文件和接口。在那里,您可以添加UITableView并符合UITableViewDelegate

如果您想将多个UITableView连接到一个UIViewController,那么最好使用相应的XIB文件和实现文件创建自定义控件并加载到UIViewController中。这样您就可以在它们之间抽象和清除代码。还要检查IBDesignable和IBInspectable。

您可能希望在它们之间共享数据,或者通过包含表视图控件的UIViewController传递它们,如果需要对特定引用执行操作,或者创建Repository来提供数据。