IOS开发笔记:xcode4.2下xib的创建和UI连接的实现方法

        刚开始学习ios开发,由于直接使用的xcode4.2开始学习的,资料很少,其操作和网上比较普通的xcode3.x差异很大,所以是摸着石头过河的感觉。经过N久尝试,终于学会了UI和代码的连接。发现有两个方法可以实现:

项目创建:

        1.新建工程 > ios > Appliction > Single View Appliction 

        2.在主项目代码文件夹下新建 > ios > User Interface > Empty > Device Family[iPhone] > Save As[ViewController]

        3.在Group & Files里,选择ViewController.xib,在File Inspector对象创建列表中选择Object拖入Document Outline下 Objects里面。

        4.选中刚刚拖入进来的Object,在identity Inspector里面,将Class属性里面输入ViewController,即将类指定为ViewController.h。

        5.在项目编译设置里面,在Main Interface 下拉框选择ViewController.

        6.返回ViewController.xib编辑界面,拖入一个Window组件。然后在在Window组件里面拖入一个TextField和两个Round Rect Button。标识符分别指定为myTitleLabel、leftButton、rightButton。将leftButton的Label键入left,将rightButton的Label键入right。

        OK,现在xib文件创建好了,点击运行,现在就可以在IOS模拟器里面看到我们刚刚创建的按钮和文本了。

UI连接和元素控制:

        方法一:

            1.打开ViewController.h,在@interface ViewController : UIViewController下键入以下代码:

                @property (strong, nonatomic) IBOutlet UITextField *myTitleLabel;
                @property (strong, nonatomic) IBOutlet UIButton *leftButton;
                @property (strong, nonatomic) IBOutlet UIButton *rightButton;
                -(IBAction)changeTextEvent:(id)sender;

            changeTextEvent 是用来实现按钮改变文本框里面的文字的函数。

            2.打开ViewController.m,在@implementation ViewController下面输入:

                @synthesize leftButton = _leftButton;
                @synthesize rightButton = _rightButton;
                @synthesize myTitleLabel = _myTitleLabel;

                -(IBAction)changeTextEvent:(id)sender{
                        NSString *title = [sender titleForState:UIControlStateNormal];
                        NSString *newTxt = [[NSString alloc] initWithFormat:@"%@ button pressed.",title];
                        _myTitleLabel.text = newTxt;
                }

            3.打开ViewController.xib,在右上角的Editor里面选择中间的按钮分屏显示代码,此时主代码编辑区域分为了两个屏,左边是xib的视图编辑器,右边打开的是ViewController.h。在Document Outline工具栏里面,在Window下leftButton上,按下鼠标右键,拖动鼠标,此时会有一根射线跟随鼠标,将射线拖动到右边ViewController.h里面的@property(strong,nonatomic) IBOutlet UIButton *leftButton;代码区域上放开,rightButton和myTitleLabel执行对应操作。

            4.ViewControl.h下,鼠标左键点击-(IBAction)changeTextEvent:(id)sender;前的圆点,将射线拖到右边leftButton上,然后执行相同操作拖到rightButton上。

            5.运行程序,此时将会看到点击左右键会分别改变TextField的内容。

        方法二:

            1.打开ViewController.h,将@interface ViewController : UIViewController替换为

                @interface ViewController : UIViewController{
                        IBOutlet UITextField *_myTitleLabel;
                        IBOutlet UIButton *_leftButton;
                        IBOutlet UIButton *_rightButton;
                }

                -(IBAction)changeTxtEvent:(id)sender;

            2.打开ViewController.m,在@implementation ViewController下输入

                -(IBAction)changeTextEvent:(id)sender{
                        NSString *title = [sender titleForState:UIControlStateNormal];
                        NSString *newTxt = [[NSString alloc] initWithFormat:@"%@ button pressed.",title];
                        _myTitleLabel.text = newTxt;
                }

            3.在分屏模式下,在Document Outline工具栏里面,在Window下leftButton上,按下鼠标右键,拖动鼠标,此时会有一根射线跟随鼠标,将射线拖动到右边 ViewController.h里面的IBOutlet UIButton *_leftButton;代码区域上放开,rightButton和myTitleLabel执行对应操作。

            4.在分屏模式下,在右边ViewController.h里的-(IBAction)changeTxtEvent:(id)sender;前面的圆点上按下左键拖动,将射线拖到左边xib设计界面上的leftButton和rightButton上。

            5.运行程序,此时也会看到和上面方法相同的效果。

        两种方法比较,第一种方法比较复杂一点。

        另看《iPhone4与iPad开发基础教程》一书里是这样写的:

            <ViewController.h>:

            @interface ViewController : UIViewController{
                    UITextField *_myTitleLabel;
                    UIButton *_leftButton;
                    UIButton *_rightButton;
            }
            @property(retain,nonatomic) IBOutlet UITextField *_myTitleLabel;
            @property(retain,nonatomic) IBOutlet UIButton *_leftButton;
            @property(retain,nonatomic) IBOutlet UIButton *_rightButton;
            -(IBAction)changeTxtEvent:(id)sender;
            @end

 

            <ViewController.m>:

            @synthesize _myTitleLabel;
            @synthesize _leftButton;
            @synthesize _rightButton;
            -(IBAction)changeTxtEvent:(id)sender{
                    NSString *title = [sender titleForState:UIControlStateNormal];
                    NSString *newTxt = [[NSString alloc] initWithFormat:@"%@ button pressed.",title];
                    _myTitleLabel.text = newTxt;
               }

            这个写法和第一种相比较,应该是变量的实例化阶段的不同,一个是在接口中实例化,一个是在实现中实例化。本人新手,如有不对恳请路过的大神指教。

        另外,在上面的changeTxtEvent方法中有这样一行类似与Java、Actionscript中的写法:

         _myTitleLabel.text = newTxt;

事实上,在Object-c中的标准写法应该是:

        [_myTitleLabel setText:newTxt];

        不知道在Object-c中是否所有的setter和getter都可以像Java那样写,此疑问还待以后的学习中求证。


转帖:http://mouselife.net/About%20Codes/165.html

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页