2015年

7月

09日

Swift Table 行追加・削除・画面遷移

Table 「+」で行の追加、「Edit」で削除ができ「>」をクリックすると画面遷移します。


Objective-Cの場合はこちら

iOS Application Maser-Detail Application を選択するだけでこの仕様内容が使用できます。 

MasterViewController.swift

import UIKit


class MasterViewController: UITableViewController {


    var objects = [AnyObject]()



    override func awakeFromNib() {

        super.awakeFromNib()

    }


    override func viewDidLoad() {

        super.viewDidLoad()

        

        // システムで用意されたボタン

        self.navigationItem.leftBarButtonItem = self.editButtonItem()


        let addButton = UIBarButtonItem(barButtonSystemItem: .Add,

                        target: self, action: "insertNewObject:")

        self.navigationItem.rightBarButtonItem = addButton

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    // 行の挿入

    func insertNewObject(sender: AnyObject) {

        objects.insert(NSDate(), atIndex: 0)

        let indexPath = NSIndexPath(forRow: 0, inSection: 0)

        self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)

    }


    // MARK: - Segues


    // 画面遷移時の情報のやり取り

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

        if segue.identifier == "showDetail" {

            if let indexPath = self.tableView.indexPathForSelectedRow() {

                let object = objects[indexPath.row] as! NSDate

            (segue.destinationViewController as! DetailViewController)

                                                            .detailItem = object

            }

        }

    }


    // MARK: - Table View


    // 設定(列数)

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {

        return 1

    }


    // 設定(行数)

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int)

                            -> Int {

        return objects.count

    }


    // 設定(セル)

    override func tableView(tableView: UITableView, cellForRowAtIndexPath

                            indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier

                            ("Cell", forIndexPath: indexPath) as! UITableViewCell


        let object = objects[indexPath.row] as! NSDate

        cell.textLabel!.text = object.description

        return cell

    }


    

    override func tableView(tableView: UITableView, canEditRowAtIndexPath

                            indexPath: NSIndexPath) -> Bool {

        // Return false if you do not want the specified item to be editable.

        return true

    }


    // セルを削除

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle:

             UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

        if editingStyle == .Delete {

            objects.removeAtIndex(indexPath.row)

            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

        } else if editingStyle == .Insert {

            // Create a new instance of the appropriate class, insert it into the array,

               and add a new row to the table view.

        }

    }

}

DetailViewController..swift

import UIKit


class DetailViewController: UIViewController {


    @IBOutlet weak var detailDescriptionLabel: UILabel!



    var detailItem: AnyObject? {

        didSet {

            // Update the view.

            self.configureView()

        }

    }


    func configureView() {

        // Update the user interface for the detail item.

        if let detail: AnyObject = self.detailItem {

            if let label = self.detailDescriptionLabel {

                label.text = detail.description

            }

        }

    }


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        self.configureView()

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


}

GitHub Table_tpl_Swift

▫️参考ページ


   

目 次