您的位置:首页 > 移动开发 > Swift

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

2014-06-20 15:34 344 查看
本文是在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来创建一个新项目吧



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

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

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



选择Cocoa Touch Class点击Next 继续



照着图选择继承的类和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编写代码的感觉吧。不足之处请大家指出,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 纯代码 ios开发