zoukankan      html  css  js  c++  java
  • iphone学习笔记(一)

     

    Authorquietwalk    

    Date2010-10-16

    模型对象表示数据。

    视图对象知道如何显示数据(模型),并且它们有可能会允许用户对数据进行编辑。

    控制器对象位于模型和视图之间。

    Interface Builder 用于创建并配置 nib 文件。

    Interface Builder 文档包含四个对象:

    1)文件拥有者代理对象。实际上,文件拥有者对象是 视图控制器实例(MyViewController实例)也可以认为是应用程序实例(UIApplication实例)。

    2)第一响应者代理对象。  

    3)应用程序的委托,文件名为“YourAppName+AppDelegate”。

    4)一个窗口。

    插座变量(outlet):视图控制器中定义的变量。在视图控制器中定义变量之后,同进也会在IB的文档所有者中有所体现,前面已说了,IB的文档所有者其实就是Xcode 中的视图控制器类。

    Interface Builder 创建用户接口。Interface Builder 创建用户接口

    .nib” NextStep Interface  Builder”的首字母缩写。程序运行时会加载 nib 文件,解档文件中的对象并且将其恢复到被保存至文件那一瞬间的状态-包括对象间的所有关联。

    XIB 文件:含三个对象,文件拥有者代理、第一响应者代理、视图。

    文件的拥有者: 视图控制器实例。

     

    identity:属性,特性。

    视图插座变量:文件与视图的关联。

    Inspector:检查员

    Interface Builder 包含一个对象库,可以将其中的对象添加至 nib 文件。

    Capitalize:大写字母

    IBOutlet是一个特殊的关键字,它唯一的作用是通知 Interface Builder 将某个实例变量或者属性当成插座变量。实际上,这个关键字被定义为空白,因此在编译的时候它没有任何作用。


    IBAction 
    是一个特殊的关键字,它唯一的作用是告诉 Interface Builder 将某个方法当成目标/动作关联中的动作。它被定义为 void

    在视图控制器中定义变量,相关于在界面的设计部分类中定义控件变量;

    在视图控制器类的接口中添加了实例变量和属性声明,方法的声明;在视图控制器类实现中添加方法的存根实现。

    initWithFormat:@"Hello, %@!", nameString

    initWithFormat:方法符串按照格式化字符串所指定的格式创建一个新

    字符串。%@表明此处应该使用一个字符串对象来代替。

    Xcode工作空间指南

    iphone 应用程序编程指南

    iphone 开发指南

    制定关联:关联标签和文本字段的插座变更。从文件拥有者到视图控件。

    按下 Contrl 键并点击文件拥有者,一个半透明的面板就会显示出来,面板里面显示了所有可用的插座变量和动作。请将光标从列表右边的圆圈拖动到所要关联的视图项上面,这样就可以建立二者之间的关联。

    1、新建工程:

    步骤:启动 Xcode(缺省情况下,Xcode 位于 /Developer/Applictions里面),选择 File > New >Project,选中 Window-Based Application 并点击 Choose 按键,选择一个合适的位置(例如您可以放在桌面也可以放在一个定制的工程目录),然后为工程添加一个名称—HelloWorld—再点击保存按键。

    2、添加一个视图控制器类。

    说明:负责管理一个视图(定制应用程序的行为)。在 iPhone上,它们也帮助进行导航和内存管理。UIKit提供一个特别的类   UIViewController类—它封装了视图控制器应该具有的大部分缺省行为。从它派生子类,在子类中定制应用程序的行为。

    步骤:

    (1) 者选中 Classes 文件夹;

    (2) 请选择 File > New File

    (3) 请选择 Cocoa Touch Classes

    (4) 选择UIViewController subclass,同时,请勾选 Options 区域中标题为 With XIB for user interface 的选择框。

    (5) 点击 Next,在其后出现的屏幕中为文件起个名字,例如 MyViewController

    (6) 点击 Finish,文件会被添加到工程。

    3、在 应用程序委托类头文件 中添加一个视图控制器实例并为其添加属性(即“HelloWorldAppDelegate.h”文件中)

    说明:将视图控制器作为应用程序委托的一个实例变量。添加到应用程序委托的实例变量是 MyViewController类的实例。

    步骤:

    1)前向声明视图控制器:在应用程序委托头文件(HelloWorldAppDelegate.h)的接口声明前面-

    HelloWorldAppDelegate声明前面-添加前向声明“@class MyViewController;”;

    2)添加视图控制器实例变量:

    说明:应用程序委托头文件中为视图控制器类添加一个实例变量

    步骤:在头文件大括号之间添加“MyViewController *myViewController;”;

    3)添加视图控制器实例变量属性:

    说明:实例含有一个属性,可以使用 getter setter 方法—即

    myViewController”和 setMyViewController:”方法—来访问该属性,同时,委托实例还会保持该属性。

    步骤:应用程序委托头文件大括号之后 @end添加下面的属性声明: 

    @property (nonatomic, retain) MyViewController *myViewController;”;

    4、在 应用程序委托类实现文件 中创建视图控制器实例(即“HelloWorldAppDelegate.m”文件中)

    说明:步骤3已经把视图控制器实例添加到应用程序的委托,现在需要实际创建一个视图控制器实例,并将其设置为属性的值。

    步骤:在applicationDidFinishLaunching:方法开头添加如下代码,这些代码用于创建一个MyViewController实例:

    MyViewController *aViewController = [[MyViewController alloc]

                            initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];

    self.myViewController = aViewController;

    [self setMyViewController:aViewController]; 这行等同于上一行。

    [aViewController release];

    代码说明:

    (1) 创建并初始化一个视图控制器类的实例。

    先使用 alloc方法创建一个视图控制器,然后用 initWithNibName:bundle:方法对其进行初始化。

    (2) 使用存取方法将新建的视图控制器是设置为 myViewController实例变量值。

    (3) 没有单独声明 setMyViewController:方法,而是隐式将其作为属性声明的一部分。

    (4) 依照内存管理规则释放视图控制器。第三行调用 release方法以放弃对所创建对象的拥有权。

    5、在 应用程序委托类实现文件 中建立视图(即“HelloWorldAppDelegate.m”文件中)

    说明:视图控制器负责管理和配置视图。您并不直接创建窗口的内容视图,而是从视图控制器获取,并将其添加成窗口子视图。

    步骤:在4中释放视图控制器之后添加:

    UIView *controllersView = [myViewController view];

    [window addSubview:controllersView];

    代码说明:建立视图并返回给窗口。

    之后,IDE添加代码“[window makeKeyAndVisible];”将窗口(现已含有您的视图)显示在屏幕上。

    6、内务处理

    1)在 应用程序委托类的实现文件 中导入视图控制器头文件

    方法:在“HelloWorldAppDelegate.m”中导入#import "MyViewController.h"

    2)在 应用程序委托类的实现文件 中为视图控制器合成存取方法

    步骤:在应用程序委托类的实现文件的 @implementation代码块中通知编译器为视图控制器合成存取方法“@synthesize myViewController;

    3)释放视图控制器

    步骤:在 dealloc方法起始处释放视图控制器“[myViewController release];”。

    7、设置视图背景:

    1)在 Interface Builder 选择视图,然后选择 Tools > Attributes Inspector ,这样屏幕就会显示Attributes inspector

     

    2)点击 Background 选色板上的方框,让颜色面板显示在屏幕上。然后在其中选择一种不同的颜色。

    3)保存 nib 文件。

    8、添加用户接口元素

    在视图窗口中添加TextBox LabelButton 等界面元素。

    9、在 视图控制器头文件 中添加8对应的变量

    说明:建立视图控制器到用户接口的关联

    UITextField *textField;

    UILabel *label;

    NSString *string;

     

    在视图控制器中定义变量之后,同进也会在IB的文档所有者中有所体现。

     

    10、在 视图控制器头文件 为9中定义的变量添加属性声明及要使用的方法

    @property (nonatomic, retain) IBOutlet UITextField *textField;

    @property (nonatomic, retain) IBOutlet UILabel *label;

    @property (nonatomic, copy) NSString *string;

    -         (IBAction)changeGreeting:(id)sender;

    最后一行是声明了一个方法。

    代码说明:

    (1) IBOutlet是一个特殊的关键字,它唯一的作用是通知 Interface Builder 将某个实例变量或者属性当成插座变量。实际上,这个关键字被定义为空白,因此在编译的时候它没有任何作用。

    (2) IBAction 是一个特殊的关键字,它唯一的作用是告诉 Interface Builder 将某个方法当成目标/动作关联中的动作。它被定义为 void

    (3) 视图控制器还作为界面控件的委托。

    11、在 视图控制器实现文件 中为在头文件中定义的方法做出实现

    12、制定关联

    前提:已经定义了视图控制器的插座变量和动作;

    建立关联的地方:nib 文件中。

    (1) 关联标签和文本字段的插座变更。

    From:文件所有者;

    To:视图控件。

    方法:按下 Contrl 键并点击文件拥有者,一个半透明的面板就会显示出来,

    面板里面显示了所有可用的插座变量和动作。将光标从列表右边的圆圈拖动到所要关联的视图项上面,这样就可以建立二者之间的关联。

     

    (2) 事件响应(以按钮的点击事件为例):

    From:视图中控件;

    To:文档所有者。

    方法:按下 Control 键并点击视图中的按键,在随后出现的查看器中,将光标从事件列表 Touch Up 项的开口圆圈拖动到文件拥有者的图标。待文件拥有者上面出现一个半透明面板后,选择其中的 changeGreeting:方法(此方法已定义)。

     

    13、实现 视图控制器 类

    说明:实现视图控制器要做三件事。要对实例变量作一些处理,包括内存管理方面的处理;需要实现changeGreeting:方法;需要确保用户点击 Done 按键的时候,键盘会消失。

    1)为视图控制器中的 变量 合成存取方法

    首先要让编译器合成存取方法。

    >>  MyViewController.m文件的@implementation MyViewController后面添加下列代码:

    @synthesize textField;

    @synthesize label;

    @synthesize string;

    2)管理 视图控制器 中的 变量 内存

    方法:更新 MyViewController.m文件中的 dealloc方法,让它在调用父类的实现之前先释放实例变量:

    - (void)dealloc {

            [textField release];

            [label release];

            [string release];

    [super dealloc]; //调用父类的实现之前

    }

    3)实现 视图控制器 中定义的方法,使其完成一定的工作

    - (IBAction)changeGreeting:(id)sender {

      

            self.string = textField.text;

      

            NSString *nameString = string;

            if ([nameString length] == 0) {

                    nameString = @"World";

            }

            NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];

            label.text = greeting;

            [greeting release];

    }  

  • 相关阅读:
    Java邮件开发(JavaMail)
    SQL删除所有表和数据
    Hyper-V由于虚拟机监控程序未运行
    .NET CORE IIS PUT和DELETE请求失败 405
    ReSharper 快捷键调试
    hyper-v提示监控未运行
    c#定义Ilist集合
    WindowsFormsApp1设置开机自启动
    SQL查询总数和分页数
    EF执行SQL语句
  • 原文地址:https://www.cnblogs.com/quietwalk/p/1853303.html
Copyright © 2011-2022 走看看