[IOS] using Swift to develop a TODO Application

Source: Internet
Author: User

[IOS] using Swift to develop a TODO Application

 

 

 

 

Background

 

I believe many iOS programmers are still holding a wait-and-see attitude towards Swift. This is just a few days after the arrival of the little guy, and he is still in the perfect stage. Second, the learning cost is high, it may take a few days to read the official documents. However, in recent years, it has been difficult to promote and use the documents in engineering projects, but it is not enough for my work.

Yes, I thought so at the beginning. Until one day, I met it: Swift Tutorial-To Do List App. This is a good video tutorial on YouTube. It teaches you how to complete a TODO application. The function is simple, that is, adding tasks and browsing tasks. I sorted out the video content. Although there is no deep content, it is quite suitable as an entry-level applet.

Target Audience: iOS developers who have certain Objective-C Development basics but have no idea about Swift, but have Xcode6 installed.

Guest officer, we can see it here. Why don't we open Xcode6 and play two games? Play together! Come on. Come on!

Requirement

We want to make a very simple little item. Like the Demo on the official website, it is a TODO list (TODO: to-do list) with the following features:

  • There is a list showing TODO
  • There is a page to add TODO
  • Click Add to display the new TODO list in the list.

    It's so easy. Let's get started!

    Create a project

    Create a new project and select the Tabbed Application template. The project name is MyTodoList. Remember to select Swift as the development language. Xcode creates a Swift project:

    ADD management class

    The first class we need is a TodoList manager, which is used to store the data in the TODO list and perform some basic operations for adding, deleting, modifying, and querying. We name itTodoManager.

    Right-click the folder on the left, select New File, and select Cocoa Class. The Class name isTodoManager, Inherited from NSObject, Xcode will automatically add a TodoManager. swift file for us.

    The variables and functions we define in Swift are global attributes, so that we can define a TodoManager object outside the class.todoManager, Simple implementation of the singleton mode:

    import UIKitvar todoManager : TodoManager = TodoManager ()class TodoManager: NSObject {}

    Next, define a struct to represent a TODO item. It has two attributes: one is the task name and the other is the task description:

    struct todo {    var name = Un-Named    var desc = Un-Described}

    Add a todos array to TodoManager to store all tasks:

    class TodoManager: NSObject {    var todos = [todo]()}

    Finally, define a method.addTaskTo add a task:

    class TodoManager: NSObject {    var todos = [todo]()    func addTask(name: String, desc: String) {        todos.append(todo(name: name, desc: desc))    }}

    OK.TodoManagerEven if it is complete.

    DEVELOPMENT INTERFACE

    Return to StoryBoard and delete the automatically generated content (several labels) on the page:

    Then add a UITableView to FirstViewController:

    Select the Tab Bar to edit the display name and image of the Tab Bar:

    Next, let's take a look at Second View. Change the Title of the second Tab Bar to Add:

    In this way, the basic page is handled.

    Data Display First View Controller

    Under the first Tab, move the mouse over UITableView, right-click and drag it to View Controller, and select DataSource and Delegate:

    Return to the Code, open the FirstViewController. swift file, and addUITableViewDelegateAndUITableViewDataSourceThe two protocols. Press and hold the Command key and click the protocol name to view the Protocol Declaration, so as to know the methods to be implemented. The method name is exactly the same as that in OC. You only need to convert it to the Swift syntax. After completionFirstViewControllerIt looks like this:

    class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{    override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }    // UITableView DataSource    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return todoManager.todos.count;    }    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: Default)        cell.textLabel?.text = todoManager.todos[indexPath.row].name        cell.detailTextLabel?.text = todoManager.todos[indexPath.row].desc        return cell    }}
    Second View Controller

    Drag some controls to build the basic framework. A Label is used as the title. Fill in the TODO Name and description for the two textfields respectively, and then add the Add button. The basic framework looks like this:

    Then we direct the Delegate of the two textfields to the View Controller, because we hope that the keyboard will automatically play back after we input and click Return. InSecondViewController.swiftAddUITextFieldDelegateAnd implementtextFieldShouldReturnDelegate method, in the method, throughresignFirstResponderPlay the keyboard back:

    // UITextField Delegatefunc textFieldShouldReturn(textField: UITextField) -> Bool {    textField.resignFirstResponder()    return true}

    We hope that the user can retrieve the keyboard when clicking the background image, and we can rewrite it.touchsBeganMethod, addendEditingMethod:

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {    self.view.endEditing(true)}

    Define two attributes to get the values in the text box, switch to the Assistant view, and right-click and drag to create two variables:

    Then we create an IBAction to process the Click Event of the Add button:

    In the click event, we want to complete the following tasks:

    • Add a TODO item in todoManager.
    • Collapse the keyboard
    • Clear content in TextField
    • Switch the TabBar to the todo label to view the result in real time.

      After OKaddBtnClickThe method is as follows:

      @IBAction func addBtnClick(sender: AnyObject) {    todoManager.addTask(todoText.text, desc: descText.text)    self.view.endEditing(true)    todoText.text =     descText.text =     self.tabBarController?.selectedIndex = 0}

      In this way, the task of adding TODO is complete.

      Delete data

      The interfaces for deleting data and Objective-C are the same.commitEditingStyleMethod implementation. Open the FirstViewController. swift file and add a TableView attribute in the code to refresh the data:

      Delete is actually deleted.todoManagerOftodosThe corresponding data in the array. We can useremoveAtIndexImplementation, rememberreloadDataRefresh TableView:

      func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {    if(editingStyle == UITableViewCellEditingStyle.Delete) {        todoManager.todos.removeAtIndex(indexPath.row)    }    todoTableView.reloadData()}
      Test

      This is the end of the basic development work. We can run and run the application.

      First add a TODO:

      Click Add to view the added TODO items in TableView:

      Slide to see the delete button:

      Click Delete. The deletion is successful:

      Summary

      I don't know how you feel here. Anyway, I feel like water is exploding! There are no profound technical points or innovative things. It is just a well-regulated small application.

      Yes, indeed. However, I hope that you can familiarize yourself with Swift and the new partner ^_^ through such a simple example.

      Click here to download the complete project source code. Have fun.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.