iOS: Storyboard

125 篇文章 1 订阅

Storyboard tutorial

http://maniacdev.com/ios-5-sdk-tutorial-and-guide/xcode-4-storyboard/

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2

http://kurrytran.blogspot.com/2011/07/simple-ios-5-tutorial-using-storyboard.html

http://codingandcoffee.wordpress.com/2011/10/12/iphone-tutorial-one-introduction-to-storyboarding/

http://www.runpc.com.tw/content/content.aspx?id=108345


Storyboard in XCode 4.2 with Navigation Controller and Tabbar Controller

http://blog.csdn.net/musou_ldns/article/details/6912996

http://blog.csdn.net/musou_ldns/article/details/6913051


Storyboard tutorial video

http://www.youtube.com/watch?v=UdQfR4nsXvI


我的一些笔记


在storyboard里的每个scene里,通常来讲都会包含下列的元素 (First Responder, View Controler, View and Some components):


逐一讲解:

First Responder: The first responder stands for the object that the user is currently interacting with. When a user works with an iOS application, multipleobjects could potentially respond to the various gestures or keystrokes that theuser creates. The first responder is the object currently in control and interact-ing with the user. A text field that the user is typing into, for example, wouldbe the first responder until the user moves to another field or control.

View Controller: 用来载入对应的scene并与其进行交互。它会对应一个View

View: 它是UIView的一个实例,用来代表该View controller对应的interface。一个View之间是可以有结构层次的,components看作是uiview instance的subviews, 而uiview instance看作是component的superview.



* The Relationship Between Views, Scenes, and Storyboards

如果你认为 "storyboard’s scene" = "a view"其实不是很确切,应该为“A scene is used to visually describe a view,同references a corresponding controller for the view话说:“a scene is where you go to edit a view and assign a controller to it.”,就是一个scene包含一个view和一个对应的view controller。而storyboard则包含你的project用到的所有scenes!


* 之前版本的Xcode,每个view会有一个xib file,而新版本的storyboard则包含所有的views,以及view直接的relationship。你还可以在storyboard里控制view flow。


* Storyboards make working with table views a lot easier with the new prototype cells and static cells features


* storyboard-base app的文件结构以及启动方式和之前Xcode版本的有大不同。在之前的nib-based app都会有一个MainWindow.xib file,这个nib file包含the top-level UIWindow object, a reference to the App Delegate, and one or more view controllers。而storyboard-based app不再使用MainWindow.xib.那么storyboard-base app是怎样启动的呢?


1. 首先看AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate: UIResponder <UIApplicationDelegate> 

@property(strong, nonatomic) UIWindow*window;

@end


storyboard-base app要求你的application delegate必须继承UIResponder (而在nib-based app通常它只是继承NSObject)以及必有一个UIWindow property (unlike before, this is not an IBOutlet)  


2.然后看AppDelegate.m file. 

在nib-base app的appDelegate.m里,会add the main view controller’s view to the window or set the window’s rootViewController property。而在storyboard-base appAppDelegate.m你会看到所有的method都是empty的,即使是application:didFinishLaunchingWithOptions方法都只有一行代:return YES。

The AppDelegate.h and AppDelegate.m files make up the delegate for the instanceofUIApplication that this project will create. In other words, these files can beedited to include methods that govern how the application behaves when it is running. 


3. Info.plist file

nib-base app用"xxx-Info.plist" file的NSMainNibFile属性or “Main nib file base name”来告UIApplicationload MainWindow.xib and hook it into the app. 而在storyboard-base app,则用"xxx-Info.plist" file的UIMainStoryboardFile属性or “Main storyboard file base name”设置在app启动时哪一个storyboard被入,UIApplicationloadstoryboard,并实例化它的第一个view controller,然后把其对应view放到AppDelegate.hUIWindow


4.  supporting files/main.m file

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc,char *argv[]){

@autoreleasepool{

return UIApplicationMain(argc, argv,nil

NSStringFromClass([AppDelegate class]));

   }

}


nib-base app中的main.m file中UIApplicationMain()的最后一个参数是nil,而在storyboard-base appUIApplicationMain()的最后一个参数是NSStringFromClass([AppDelegate class]).


A big difference with having a MainWindow.xib is that the app delegate is not part of the storyboard. Because the app delegate is no longer being loaded from a nib (nor from the storyboard), we have to tell UIApplicationMain specifically what the name of our app delegate class is, otherwise it won’t be able to find it.


view controller container是指能够往里面添加一个或多个view controller的东东. 有4种view controller container:


* Tab Bar Controller


*Navigation Controller:有一連串的動作要執行,畫面會因此切換甚至有階層性的關係,這個部分就常使用到 Navigation Controllernavigation controller后面跟着的view controller的view显示时会带有navigation bar。

ref link:  http://blog.sina.com.cn/s/blog_67419c420100qfuo.html


* Split View Controller


* Page View Controller


当你往storyboard drag and drop一个tab bar controller,它会添加3个scene by default,一个是tab view controller container,另外2个是每个tab的view controller。在tab bar controller scene里,你会看到多了2个"relationship" items,用来表示会接2个tab的view controller。


如何在一个view controller前面添加一个navigation controller? 

With the View Controller selected, choose Editor\Embed In\Navigation Controller from Xcode’s menubar.





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值