zoukankan      html  css  js  c++  java
  • Swift基础--使用TableViewController自己定义列表

    首先建立一个swift项目,把storyboard的内容删掉,加入一个Navigation Controller。然后设置storyboard相应界面的class,在Navigation Controller界面设置View Controller的is initial View Controller,这里使用的自己定义列表内容。所以要新建一个继承UITableViewCell的类,然后设置storyboard中Table View的Prototype Cells的class,对于点击item进入详情界面,使用TableView 中的prepareForSegue方法

    JieTableViewController.swift

    //
    //  JieTableViewController.swift
    //  JieTableView
    //
    //  Created by jiezhang on 14-10-5.
    //  Copyright (c) 2014年 jiezhang. All rights reserved.
    //
    
    import UIKit
    
    class JieTableViewController: UITableViewController {
    
        var listVideos : NSMutableArray!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            var bundle = NSBundle.mainBundle()
            let plistPath : String! = bundle.pathForResource("videos", ofType: "plist")
            listVideos = NSMutableArray(contentsOfFile: plistPath)
            // Uncomment the following line to preserve selection between presentations
            // self.clearsSelectionOnViewWillAppear = false
            
            // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
            //以下这段话是设置左边编辑。右边加入item
            
            self.navigationItem.leftBarButtonItem = self.editButtonItem()
            let addButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: self, action: "insertNewObject:")
            self.navigationItem.rightBarButtonItem = addButton
            
        }
    
        func insertNewObject(sender: AnyObject) {
            var item : NSDictionary = NSDictionary(objects:["http://c.hiphotos.baidu.com/video/pic/item/f703738da977391224eade15fb198618377ae2f2.jpg","新增数据", NSDate.date().description] , forKeys: ["video_img","video_title","video_subTitle"])
            listVideos.insertObject(item, atIndex: 0)
            let indexPath = NSIndexPath(forRow: 0, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
        
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        // MARK: - Table view data source
        //返回节的个数
        override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
            // #warning Potentially incomplete method implementation.
            // Return the number of sections.
            return 1
        }
        //返回某个节中的行数
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            // #warning Incomplete method implementation.
            // Return the number of rows in the section.
            return listVideos.count
        }
        //为表视图单元格提供数据,该方法是必须实现的方法
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            let cellIdentifier : String = "videoItem"
            let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as JieTableViewCell
            var row = indexPath.row
            var rowDict : NSDictionary = listVideos.objectAtIndex(row) as NSDictionary
            let url : String = rowDict.objectForKey("video_img") as String
            let dataImg : NSData = NSData(contentsOfURL: NSURL(string : url))
            cell.JieVideoImg.image = UIImage(data: dataImg)
            cell.JieVideoTitle.text = rowDict.objectForKey("video_title") as?

    String cell.JieVideoSubTitle.text = rowDict.objectForKey("video_subTitle") as?

    String return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { } // 支持单元格编辑功能 override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { // Return NO if you do not want the specified item to be editable. return true } // Override to support editing the table view. override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == .Delete { // Delete the row from the data source listVideos.removeObjectAtIndex(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 } } // Override to support rearranging the table view. override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { if fromIndexPath != toIndexPath{ var object: AnyObject = listVideos.objectAtIndex(fromIndexPath.row) listVideos.removeObjectAtIndex(fromIndexPath.row) if toIndexPath.row > self.listVideos.count{ self.listVideos.addObject(object) }else{ self.listVideos.insertObject(object, atIndex: toIndexPath.row) } } } // Override to support conditional rearranging of the table view. //在编辑状态。能够拖动设置item位置 override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { // Return NO if you do not want the item to be re-orderable. return true } // MARK: - Navigation //给新进入的界面进行传值 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if segue.identifier == "showDetail" { if let indexPath = self.tableView.indexPathForSelectedRow() { let object : NSDictionary = listVideos[indexPath.row] as NSDictionary (segue.destinationViewController as JieDetailViewController).detailItem = object } } } }



    JieTableViewCell.swift

    //
    //  JieTableViewCell.swift
    //  JieTableView
    //
    //  Created by jiezhang on 14-10-5.
    //  Copyright (c) 2014年 jiezhang. All rights reserved.
    //
    
    import UIKit
    
    class JieTableViewCell: UITableViewCell {
    
        @IBOutlet weak var JieVideoImg: UIImageView!
        @IBOutlet weak var JieVideoTitle: UILabel!
        @IBOutlet weak var JieVideoSubTitle: UILabel!
        
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
    
        override func setSelected(selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
            
       
        }
    
    }
    
    JieDetailViewController.swift

    //
    //  JieDetailViewController.swift
    //  JieTableView
    //
    //  Created by jiezhang on 14-10-5.
    //  Copyright (c) 2014年 jiezhang. All rights reserved.
    //
    
    import UIKit
    
    class JieDetailViewController: UIViewController {
        
    
        @IBOutlet var big_video_img: UIImageView!
        //接受传进来的值
        var detailItem: NSDictionary?
        
        
        func configureView() {
            if let detail : NSDictionary = self.detailItem {
                self.title = detail.objectForKey("video_title") as? String
                let url : String = detail.objectForKey("video_img") as String
                let dataImg : NSData = NSData(contentsOfURL: NSURL(string : url))
                self.big_video_img.image = UIImage(data: dataImg)
            }
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            configureView()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        // MARK: - Navigation
        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
           
        }
    
    }
    









    源代码地址:https://github.com/jwzhangjie/JieTableView

  • 相关阅读:
    14.18 InnoDB Backup and Recovery 备份和恢复:
    14.18 InnoDB Backup and Recovery 备份和恢复:
    php使用 _before_index() 来实现访问页面前,判断登录
    php使用 _before_index() 来实现访问页面前,判断登录
    查询方式实例演示
    查询方式实例演示
    haproxy timeout server 46000 后台超时时间
    haproxy timeout server 46000 后台超时时间
    14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE
    14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5083589.html
Copyright © 2011-2022 走看看