swift第一个ios项目,纯代码编程


本文是在xocde6 beta1版本下写得,到xcode6正式版本后会有些小错误,请参看我的另一篇博客swift第一个ios项目,纯代码编程(续)http://blog.csdn.net/lh_work/article/details/40787265

是在本文基础上修改和添加了一些东西

最近看了看网上关于swift的一些基础介绍,大部分都采用了storyboard的方式来设计界面。但是本人还是比较喜欢以纯代码的方式来写代码的,呵呵,和本人的习惯有关。所以在这里介绍一下怎么样基于swift语言用纯代码的方式来写一个小应用吧。


当前AppStore中还没有推出Xcode6的正式版本,只能去官网用开发者账号下载beta版本,同时Xcode6要求OS X版本在10.9.3以上版本,所以发现无法使用Xcode6的朋友先升级下系统吧。


现在开始打开Xcode6来创建一个新项目吧


swift第一个ios项目,纯代码编程_第1张图片


选择Empty Application后点击next后再选择存储位置,这里就不赘述了,直接开始写代码吧


进入项目的时候只有一个AppDelegate.swift代码文件,和以前的ios项目中.h和.m文件实现一个类不同,swift语言将.h和.m中合并成了一个.swift来实现

那么我们现在先来创建一个试图控制器ViewController,为方便下一步给UIWindow设置根试图控制器

swift第一个ios项目,纯代码编程_第2张图片

选择Cocoa Touch Class点击Next 继续


swift第一个ios项目,纯代码编程_第3张图片


照着图选择继承的类和swift语言点击Next


此时将多出了一个ViewController.swift代码文件,进入这个代码文件将其init方法删除,记得必须删除,因为我们下面是用纯代码创建对象的,如果不删除这个nib初始化方法,下面在AppDelegate中创建的时候将会出错。

 init(nibName nibNameOrNil:String?, bundle nibBundleOrNil:NSBundle?) {

       super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

        // Custom initialization

    }

删除。

回到AppDelegate中开始写代码



func application(application:UIApplication, didFinishLaunchingWithOptions launchOptions:NSDictionary?) -> Bool {

        //创建试图控制器

       var vc =ViewController()

        //创建导航控制器,并设置其根试图控制器为vc

       var nav   =UINavigationController(rootViewController:vc);

        


        

       self.window =UIWindow(frame:UIScreen.mainScreen().bounds)

        // Override point for customization after application launch.

       self.window!.backgroundColor =UIColor.whiteColor()

        //设置UIWindow的根试图控制器

       self.window!.rootViewController = nav;

        self.window!.makeKeyAndVisible()

       returntrue

    }



这样就实现了纯代码的方式在swift基础上实现程序试图控制器的跳转了,接下来我们在试图控制器中添加并实现一个简单的tableview的使用


进入ViewController中



//创建tableview

   var tableView :UITableView?

    

       overridefunc viewDidLoad() {

       super.viewDidLoad()

           self.title ="MySwift"

       setupViews()


        // Do any additional setup after loading the view.

    }

   func setupViews()

    {

        //初始化tableview并设置frame

       self.tableView =UITableView(frame:self.view!.frame)

        //设置tableview的代理对象

       self.tableView!.delegate =self

       self.tableView!.dataSource =self

       self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier:"cell")

//将tableview添加到view试图上

       self.view?.addSubview(self.tableView)

    }

    


在这里要注意的是设置tableview的代理对象的时候会报错,其实就是因为没有在类中继承代理协议,这个和以前的警告不同直接报错了,我们在类中继承tableview的代理协议


class ViewController:UIViewController ,UITableViewDelegate ,UITableViewDataSource{


大家继续写的时候发现

self.tableView!.dataSource = self

这里仍然报错,原因是UITableViewDataSource有两个必须实现的方法,只要把这两个方法粘贴到代码中就不会了,后面的报错就不一一赘述原因了,这里的报错很多就是方法没有返回值或者没有实现代理引起的警告。

好,我们下面实现两个代理方法


func tableView(tableView:UITableView!, numberOfRowsInSection section:Int) -> Int

    {

       return20;

    }

    

    // Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:

    // Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

    

   func tableView(tableView:UITableView!, cellForRowAtIndexPath indexPath:NSIndexPath!) -> UITableViewCell!

    {

       let cell = tableView .dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)as UITableViewCell

        cell.textLabel.text =String(format:"%i", indexPath.row+1)

       return cell

    }


这样就将这个简单的项目完成了,以上都是本人个人的一些想法实现,希望能给大家带来帮助吧。主要是为了帮助大家熟悉运用swift像以前用Objective-C编写代码的感觉吧。不足之处请大家指出,谢谢。



你可能感兴趣的:(ios开发技术)