1. 程式人生 > >第十天:SwiftGoodAsOldPhones

第十天:SwiftGoodAsOldPhones

nging nim line created spl follow href pre memory

參考鏈接:https://github.com/soapyigu/Swift-30-Projects

 1 import UIKit
 2 
 3 class Product: NSObject {
 4     var name: String?
 5     var cellImageName: String?
 6     var fullscreenImageName: String?
 7     
 8     init(name: String, cellImageName: String, fullscreenImageName: String) {
 9         self.name = name
10 self.cellImageName = cellImageName 11 self.fullscreenImageName = fullscreenImageName 12 } 13 }

  1 import UIKit
  2 
  3 class ProductsTableViewController: UITableViewController {
  4 
  5     fileprivate var products: [Product]?
  6     fileprivate let identifier = "productCell
" 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 // Uncomment the following line to preserve selection between presentations 12 // self.clearsSelectionOnViewWillAppear = false 13 14 // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
15 // self.navigationItem.rightBarButtonItem = self.editButtonItem 16 17 products = [ 18 Product.init(name: "1907 Wall Set", cellImageName: "image-cell1", fullscreenImageName: "phone-fullscreen1"), 19 Product.init(name: "1921 Dial Phone", cellImageName: "image-cell2", fullscreenImageName: "phone-fullscreen2"), 20 Product.init(name: "1937 Desk Set", cellImageName: "image-cell3", fullscreenImageName: "phone-fullscreen3"), 21 Product.init(name: "1984 Moto Portable", cellImageName: "image-cell4", fullscreenImageName: "phone-fullscreen4") 22 ] 23 } 24 25 override func didReceiveMemoryWarning() { 26 super.didReceiveMemoryWarning() 27 // Dispose of any resources that can be recreated. 28 } 29 30 // MARK: - Table view data source 31 32 override func numberOfSections(in tableView: UITableView) -> Int { 33 // #warning Incomplete implementation, return the number of sections 34 return 1 35 } 36 37 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 38 // #warning Incomplete implementation, return the number of rows 39 return products?.count ?? 0 40 } 41 42 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 43 let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) 44 45 guard let products = products else { return cell } 46 47 // Configure the cell... 48 cell.textLabel?.text = products[(indexPath as NSIndexPath).row].name 49 50 if let imageName = products[(indexPath as NSIndexPath).row].cellImageName { 51 cell.imageView?.image = UIImage.init(named: imageName) 52 } 53 54 return cell 55 } 56 57 /* 58 // Override to support conditional editing of the table view. 59 override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 60 // Return false if you do not want the specified item to be editable. 61 return true 62 } 63 */ 64 65 /* 66 // Override to support editing the table view. 67 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 68 if editingStyle == .delete { 69 // Delete the row from the data source 70 tableView.deleteRows(at: [indexPath], with: .fade) 71 } else if editingStyle == .insert { 72 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 73 } 74 } 75 */ 76 77 /* 78 // Override to support rearranging the table view. 79 override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { 80 81 } 82 */ 83 84 /* 85 // Override to support conditional rearranging of the table view. 86 override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { 87 // Return false if you do not want the item to be re-orderable. 88 return true 89 } 90 */ 91 92 93 // MARK: - Navigation 94 95 // In a storyboard-based application, you will often want to do a little preparation before navigation 96 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 97 // Get the new view controller using segue.destinationViewController. 98 // Pass the selected object to the new view controller. 99 if segue.identifier == "showProduct" { 100 if let cell = sender as? UITableViewCell, let indexPath = tableView.indexPath(for: cell), let productVC = segue.destination as? ProductViewController { 101 productVC.product = products?[(indexPath as NSIndexPath).row] 102 } 103 } 104 } 105 106 107 }

 1 import UIKit
 2 
 3 class ProductViewController: UIViewController {
 4     
 5     @IBOutlet var productImageView: UIImageView!
 6     @IBOutlet var productNameLabel: UILabel!
 7     
 8     var product: Product?
 9 
10     override func viewDidLoad() {
11         super.viewDidLoad()
12 
13         // Do any additional setup after loading the view.
14         
15         productNameLabel.text = product?.name
16         
17         if let imageName = product?.fullscreenImageName {
18             productImageView.image = UIImage.init(named: imageName)
19         }
20     }
21 
22     @IBAction func addToCartButtonDidTap(_ sender: AnyObject) {
23         print("Add to cart successfully")
24     }
25     
26     override func didReceiveMemoryWarning() {
27         super.didReceiveMemoryWarning()
28         // Dispose of any resources that can be recreated.
29     }
30     
31 
32     /*
33     // MARK: - Navigation
34 
35     // In a storyboard-based application, you will often want to do a little preparation before navigation
36     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
37         // Get the new view controller using segue.destinationViewController.
38         // Pass the selected object to the new view controller.
39     }
40     */
41 
42 }

第十天:SwiftGoodAsOldPhones