设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Swift开发iOS应用教程

2014-6-23 12:03| 发布者: joejoe0332| 查看: 7738| 评论: 0|原作者: 几点人, GoodLoser, Garfielt, 地狱星星, 0x0bject|来自: oschina

摘要: 苹果最近宣布了一个改变iOS应用既往开发的一个大变化,一种取代Objective-C称为Swift的完全不同的编程语言。我正在努力学习这门新语言,而且我决定将按照我的学习进程定期发布并共享我所找到的内容。这是众多主题的 ...


  这里发生的是iTunes对歌曲和专辑使用不同的键。因此所有这些域应该声明为可选的,并且我们应该检查它们至少它们其中一个被保存。如果你选择使用不同的媒体类型,这对于你的应用会是非常重要的。


  最终格式化我们所有信息和验证它们都存在后,我们创建一个新的唱片集,并且添加到我们的唱片集数组中来:

1var newAlbum = Album(name: name!, price: price!, thumbnailImageURL: 
2thumbnailURL!, largeImageURL: imageURL!, itemURL: itemURL!, 
3artistURL: artistURL!)
4albums.append(newAlbum)


  既然都处理完了,我们重新加载我们的表视图,然后关掉网络监视器。

1self.appsTableView.reloadData()
2UIApplication.sharedApplication().networkActivityIndicatorVisible = false


  创建第二个视图


  现在需要显示一个唱片集的详细信息了,我们需要一个新的视图。首先我们创建这个类。添加一个叫做DetailsViewController.swift并继承自UIViewController的文件。


  我们的视图控制器将非常简单。我们只需添加一个album,然后实现UIViewController的init和viewDidLoad方法即可。

01import UIKit
02 
03class DetailsViewController: UIViewController {
04 
05    var album: Album?
06 
07    init(coder aDecoder: NSCoder!) {
08        super.init(coder: aDecoder)
09    }
10 
11    override func viewDidLoad() {
12        super.viewDidLoad()
13    }
14}



  这段代码没有做多少,但是没关系。我们需要这个类以便设置我们的storyboard。


  既然我们会在栈中向后向前推视图,那我们一定需要一个导航栏。很难用文字解释,并且有保密协议不允许我展示Xcode 6截图,因此取而代之,我创建了一个短视频来展示怎样在Xcode 5中做这些。这一个过程跟在Xcode 6 Beta 中几乎一样,并且不受保密协议的约束。


  在这段视频里,我们完成了以下工作:

  1. 使用编辑菜单中的Xcode快捷键在控制器导航里嵌入了我们创建的视图控制器:点击试图控制器,然后选择编辑-〉嵌入-〉控制器导航

  2. 添加了新的视图控制器

  3. 设置DetailsViewController对应的类和storyboard ID。

  4. 把我们最先创建的视图控制器里的表格单元视图通过Ctrl、点击加上拖拉到我们刚创建的心得视图控制器里,接着选择segue类型为'push'。


  最后一步所做的事情就是在控制器导航上创建一个segue,它将新的视图放在堆栈的最顶端。此时运行这个一下这个应用,然后点击单元格,你将能够看到动态载入了新的视图。


  接着我们给新的视图增加一个简单的UI。这个UI将包括100x100像素的UIImageView,一个标题,一个按钮和一个文本视图。从对象库中拖拉出上面所说的所有对象,然后在新的视图上按照自己的意愿对这些对象进行布局。在创建这个UI之前,请注意:XCode6有一个显示尺寸分类的概念。为了达到我们的目标,我们需要设置显示尺寸分类为iPhone。这时在显示窗口的底部,你将可以看到“宽多少,高多少”这样的描述。这就是当前storyboard的大小。如果你奇怪为什么你所创建的视图是正方形的,这就是原因所在。点击它,更改它以显示iPhone大小图片,即设置其为"宽度压缩|高度任意“。

 

给专辑信息提供新的视图

  当启动storyboard里的segue的时候,它首先调用的时当前屏幕的视图控制器所对应的名字为prepareForSegue函数。我们将拦截这个函数调用,通过这种方式来告诉新的视图控制器我们正在查看哪个专辑。向SearchResultsViewController添加以下代码:

1override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject) {
2    var detailsViewController: DetailsViewController = segue.destinationViewController as DetailsViewController
3    var albumIndex = appsTableView.indexPathForSelectedRow().row
4    var selectedAlbum = self.albums[albumIndex]
5    detailsViewController.album = selectedAlbum
6}


  这儿传入的segue参数具9有一个名字为destinationViewController的成员,它就是我们刚刚创建的DetailsViewController。为了设置专辑信息,我们首先需要使用上面代码中所示的'as'关键字把它转换为DetailsViewController。


  接着,我们通过调用表格视图的indexPathForSelectedRow()方法确定运行此segue的时选择的是哪一专辑。


  有了这些信息,我们就可以告诉detailsViewController在显示专辑信息之前我们点击了哪一专辑。 


  接下来,我们将会向你展示Xcode的一个非常强大的特性。通过使用这个特性,Xcode将会替我们编写部分代码。


  再次打开storyboard,开始给图像视图、标签、按钮和文本视图创建对应的IBOutlet。在Xcode的右上角有一个"辅助“按钮。它的图标像一个带有领结的男外套。点击一下将会在storyboard窗口的右下方开启一个代码窗口。看一下是否其中一个面板显示的DetailsViewController.swift,另一个显示的是Main.storyboard。


  然后,按住ctrl,接着点击并拖拉图像视图到代码文件。这时DetailsViewController类的定义下方就会出现一条横线。提示你输入名称,我们输入"albumCover"。选项就选默认的就可以了。做完这些操作后,你就会看到新增了下面这行代码:

1@IBOutlet var albumCover : UIImageView


  此时,我们创建了一个新的IBOutlet,并且把它与storyboard里的DetailsViewControll关联起来。非常酷吧?


  然后对你添加到视图的其他对象也做同样的操作。完成这些以后,我们还要修改viewDidLoad,以便装载传递给视图对象的信息。下面是DetailsViewController代码的最终版本:


01import UIKit
02 
03class DetailsViewController: UIViewController {
04     
05    @IBOutlet var albumCover : UIImageView
06    @IBOutlet var titleLabel : UILabel
07    @IBOutlet var detailsTextView : UITextView
08    @IBOutlet var openButton : UIButton
09     
10    var album: Album?
11     
12    init(coder aDecoder: NSCoder!) {
13        super.init(coder: aDecoder)
14    }
15     
16    override func viewDidLoad() {
17        super.viewDidLoad()
18        titleLabel.text = self.album?.title
19        albumCover.image = UIImage(data: NSData(contentsOfURL: NSURL(string: self.album?.largeImageURL)))
20    }
21 
22}


  上面的几个@IBOutlet是由storyboard创建的UI与视图控制器之间的关联,而viewDidLoad方法则根据装载的专辑对象设置专辑标题和专辑封面。


  

  现在,试着运行应用程序并看一下结果。我们现在可以深入探究相册的详细信息,并且得到一个与专辑封面和标题相关的详细信息视图。因为我们之前做了导入导航控制器的操作,因此我们还免费获得功能后退按钮 ! 


  如果目前为止,你已经做到这些,请在 我的Twitter上面告诉我你已经成功完成,因为我想要亲自祝贺你!你在用Swift开发iOS应用的道路上进展不错。 


  下一次,我们要弄清楚一些需要放在我们大段文本字段中的东西,并且我们要让我们的按钮能在展示专辑时做一些酷酷的事情。 所以一定要注册,以便下一次通知。 


  这一节的完整源代码可以 在这里获得



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部