Eklektycznej wędrówki po platformach, językach i technologiach ciąg dalszy. Dziś padło na Swift. Jakiś czas temu zwróciłem uwagę na ten język. Jeśli chodzi o aplikacje iOS w tym języku, to można streścić to w jednym zdaniu. Generalnie w XCode jest wszystko tak samo jak podczas pisania w Objective-C, operujemy na tym samym z grubsza API, tylko kod piszemy w Swift –;) A to jest nowocześniej i krócej.
projekt aplikacji w XCode w Swift – layout tworzymy analogicznie jak wcześniej
import UIKit
class ViewController: UITableViewController {
let array = [“item1”, “item2”, “item3”]
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = 70
tableView.backgroundView = UIImageView(image: UIImage(named: “breads”))
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
navigationController?.navigationBar.alpha = 0.5
}
…
override func tableView(tableView: UITableView, numberOfRowsInSection: Int, section: Int) –> Int {
return array.count;
}
…
}
outlety w designerze tworzy się podobnie jak wcześniej
class XController: UIViewController {
@IBOutlet var titleText: UITextField!
…
}
model
nowsza wersja Swift:
let cell = sender as! customcell
class Recipe: NSObject {
var title: String?
init (title: String) {
self.title = title
}
override init() {
super.init()
}
}
class RecipeManager: NSObject {
static var recipes = [Recipe]()
class func AddRecipe(title: String) {
var r = Recipe(title: title)
recipes.append(r)
}
…
}
tworzenie akcji za pomocą designera podobnie jak wcześniej
@IBAction func doneButton_click(sender: AnyObject) {
}
obsługa zmian wartości
NSNotificationCenter.defaultCenter().addObserver(self, selector: “textTitleDidChange”, name: UITextFieldTextDidChangeNotification, object: nil)
func textTitleDidChange() {
}
dodawanie animacji do przycisku
@IBOutlet var activityIndicator: UIActivityIndicatorView!
…
activityIndicator.startAnimating()
…
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC)))
dispatch_after(time,
dispatch_get_main_queue()) {
self.activityIndicator.stopAnimating()
}
usuwanie wiersza z animacją
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == .Delete) {
…
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
persystencja danych
var defaults = NSUserDefaults.standardUserDefaults()
var myobject = defaults.objectForKey(“myobject”) as? String
…
defaults.setObject(“mystring”, forKey: “myobject”)
…
class Recipe: …, NSCoding {
…
required init(coding aDecoder: NSCoder) {
if let titleDecoded = aDecoder.decodeObjectForKey(“title”) as? String {
title = titleDecoded
}
}
…
}
Brak komentarzy:
Prześlij komentarz