IOS界面开发和storyboard

      文章纯手工打造,希望大家来拍砖,转载注明出处:http://blog.csdn.net/mozf881/article/details/8657368

      刚从Delphi转过来做IOS开发,开始觉得和桌面窗体开发一样,其实不然。用过VC,Delphi,C#这些开发工具都知道,界面开发以窗体为单位,然后使用控件布局。但IOS开发并不一样。

      在IOS里面,你看的一个界面,一般是由多个view组成的层级结构。就像系统的闹钟程序,由TabBar,导航栏,和内容视图三部分组成,他们分别由UITabBarController,UINavigationController,UITableViewController或他们的子类来控制。

      

      

       我们用用系统默认创建的工程为例,用4.2以上的版本xcode(我的是xcode4.5),创建一个Single View Application工程

 

下一步时,输入工程的名字,勾选Use Stroryboards,完成。

      

       展开工程列表,可以看到MainStoryboard_iPhone.storyboard和MainStoryboard_iPad.storyboard两个故事板,如果编译的是iPhone程序,使用MainStoryboard_iPhone.storyboard故事板,如果编译iPad程序,使用MainStoryboard_iPad.storyboard故事板。当前编译的是iPhone程序,点击MainStoryboard_iPhone.storyboard,看到如下图:

        左边的箭头表示这是根视图,程序启动载入UIView视图。我们把这个UIView视图删除,从右侧的视图对象Navtigation Controller拖到故事版之中。此时我们看到XCode实际帮你生成了两个视图,UINavtigation视图和UITableview视图。实际上就是两个视图层,第一个是UINavtigation,为根视图,第二个是UITableview,是UINavtigation的子视图。         

        初次使用storyboard,以为方向箭头就表示视图跳转,其实不全是,这里表示视图的层叠。.这时候我们还没有写一句代码,启动程序,可以程序是一个导航框架,里面是空白的UITableview视图。

     

       UITableview视图是空的,我们要在tableview加一行。这时候就要写代码了。

       首先创建一个类,父类为UITableviewController

 

编写代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil)
    {
      
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        NSString *strline = [[NSString alloc] initWithFormat:@"第%d行",[indexPath row]];
        cell.text = strline;        
    }
    return cell;
}

     接着一步很重要,回到storyboard,选中UITableview视图,在关联右侧“showthe Identity Inspector”的“Custom Class”的Class选择先前创建的类。



      运行代码:



   还不错吧。



       然后在Delegate文件didFinishLaunchingWithOptions创建导航栏和UITableview

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        
    myTableView *tableview = [[myTableView alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableview];
    
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];
    return YES;
}


     运行代码:

        


     这里会有疑问,导航栏的标题,导航按钮在哪里设置?是不是建立UINavigationController的子类进行控制?不是的,UINavigationController一般不用子类化。导航栏会随着显示内容改变而改变,导航栏设置标题,增加按钮,图标等,都在子视图(这里mytableview)进行设置。

      最后总结注意项:

      1、IOS界面可以由多个视图层叠在一起

      2、每个视图都有自己的视图控制器,如果没有子类化,默认系统的视图控制器。

      3、storyboard和nib不一定创建,直接代码创建视图控制器也是一样的效果。而且考虑团队合作和代码冲突,建议视图都直接代码创建


      只有把XCODE界面制作原理理解清楚,IOS程序制作也就不太难了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值