单击tableview单元格时转到另一个视图

时间:2015-08-20 21:29:02

标签: ios swift uitableview tableview

我知道之前已经问过这个问题,但我发现的所有解决方案对我来说都没有意义。我是iOS的初学者,我知道如何左键单击并将按钮拖动到另一个视图以进行转换,但我无法使用tableview。我的布局只是两个视图控制器,一个是tableview,第二个是空白,我最终想要为每个tableview单元格点击更新标签。

下面的代码是针对第一个视图控制器,其中包含了使基本的tableview工作的所有内容

import UIKit

var fullList = [String]()
var dateList = [String]()

class ViewController: UIViewController, UITableViewDelegate {

    @IBOutlet var betTable: UITableView!

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

        if(NSUserDefaults.standardUserDefaults().objectForKey("fullList") != nil)   //check if the to do list exists
        {
            fullList = NSUserDefaults.standardUserDefaults().objectForKey("fullList") as! [String]      //store toDoList array into NSUserDefaults to save to iphone
        }

        if(NSUserDefaults.standardUserDefaults().objectForKey("dateList") != nil)
        {
            dateList = NSUserDefaults.standardUserDefaults().objectForKey("dateList") as! [String]
        }
    }

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
        cell.textLabel?.text = fullList[indexPath.row]
        return cell
    }

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

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
    {
        if(editingStyle == UITableViewCellEditingStyle.Delete)
        {
            fullList.removeAtIndex(indexPath.row)
            NSUserDefaults.standardUserDefaults().setObject(fullList, forKey: "fullList")
            NSUserDefaults.standardUserDefaults().setObject(dateList, forKey: "dateList")

            betTable.reloadData()
        }
    }

    override func viewDidAppear(animated: Bool)
    {
        betTable.reloadData()
    }
}

1 个答案:

答案 0 :(得分:1)

  1. 从tableViewController拖到SecondViewController以创建Segue。 (像这样)
  2. enter image description here

    根据您的要求选择类型。

    1. 现在选择Segue并在属性检查器中,为字段' Identifier'提供任何名称。我们稍后会将其用于参考目的。
    2. enter image description here

      1. 现在在ViewVontroller.swift文件中,导航到函数performSegueWithIdentifier。在这里你可以调用func 'use strict'; /** * Initialize the router's default behaviors */ // @ngInject function initRouter($urlRouterProvider: angular.ui.IUrlRouterProvider, $stateProvider: angular.ui.IStateProvider): void { $urlRouterProvider.otherwise('/main'); $stateProvider .state('app', { abstract: true, views: { 'header': { templateUrl: '/angular/app/components/_header/headerView.html' }, 'sidebar': { templateUrl: '/angular/app/components/_sidebar/sidebarView.html' } } }) .state('app.home', { url: '/main', views: { 'main@': { templateUrl: '/angular/app/components/landing/landingView.html', controller: 'LandingController', controllerAs: 'vm' } } }) .state('app.settings', { url: '/config', views: { 'main@': { templateUrl: '/angular/app/components/settings/settingsView.html', controller: 'settingsController', controllerAs: 'vm' } } }); } angular.module('app').config(initRouter); 并提供你之前给出的名字。这是代码:
      2. enter image description here

        希望这会有所帮助。 :)