objective-III

一、创建窗口应用程序 
打开xcode->create->在iso目录下选择empty-null->创建
在打开的项目文件名上右击NEW FILE,在ios下选择objective-c,next->在Class中输入类名FirstViewController,在Subclass of中选择父类UIViewController,在With XIB
 for user interface上打上勾->next->create 
这样就创建好了一个OC窗口文件,在目录下生成了.m、.h、.xib(视图文件)三个文件
在入口方法main方法中一般不做任何改变,因为main方法中的

return UIApplicationMain(argc, argv, nil,NSStringFromClass([AppDelegateclass]));//直接跳转到AppDelegate类,因此我们一般在AppDelegate中进行设计

二、添加页面背景及相应组件
First:用拖拽的方式进行组件的添加
1、打开创建好的新页面的.xib文件,在右下角选择页面背景组件,用鼠标左键将其拖拽到页面上,然后在其属性文件Image View中的Image中选择背景图片。这样一张背景图片就添加好了
2、同样。在组件区域选择label组件和Text组件及Button组件将其添加到页面中,并在其属性的Text中(或者双击)更改显示文字
      将Text文本框更改成密码输入框时,只需要在其属性中将Control上面的Secure选项打上勾即可
3、将创建好的页面加载到显示页中,将其显示出来
       因为系统默认的第一显示页为AppDelegate,因此,我们想要系统显示我们自己创建的页面,必须在AppDelegate.m文件中更改第一显示页
AppDelegate.m文件【更改application方法】

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];//当前窗口的大小

// Override point for customization after application launch.

self.window.backgroundColor = [UIColorwhiteColor];//当前窗口的颜色

//    self.window.backgroundColor=[UIColor yellowColor];

FirstViewController *first=[[FirstViewControlleralloc]init];//创建一个窗口对象

self.window.rootViewController=first;//将创建好的first页面作为第一视图进行展示

[self.windowmakeKeyAndVisible];//显示窗口

returnYES;

}

4、点击Run就可以看到我们自定义的页面了
Second:用代码的形式进行组件的添加
除了用环境给定义的组件视图之外,我们还可以用代码的形式进行组件的添加。
我们创建的新页面FirstViewController的.m文件中有三个方法:初始化方法initWithNibName、页面加载时的方法viewDidLoad以及系统自动调用的方法didReceiveMemoryWarning(当内存不够时,系统自动调用此方法,释放掉一些变量等)
更改viewDidLoad方法,自定义我们的组件,代码如下:

- (void)viewDidLoad//当前页面加载的时候调用的方法。

{//一般写组建的创建和属性、变量的初始化

[superviewDidLoad];

//用代码的形式创建组件

//1、实例化一个对象

UILabel *la=[[UILabelalloc]init];

//2、设置组件的相关属性 [整个页面的坐标系从左上角开始(往下x增大,往右x增大)]

la.frame=CGRectMake(20,30, 280, 50);//坐标和组件的大小四个参数值分别为:x值,y值,组件宽度,组件高度

la.text=@"滨州学院内部系统";//标签要显示的内容

la.textAlignment=NSTextAlignmentCenter;//居中对齐

la.backgroundColor=[UIColorclearColor];//背景颜色为透明色

la.textColor=[UIColorredColor];//字体颜色

];//字体大小

//3、将这个组件加载到当前视图

[self.viewaddSubview:la];

// Do any additional setup after loading the view from its nib.

}

三、关联拖拽组件和代码

视图下,在视图界面选择要关联的组件,按住ctrl键加用鼠标左键将其拖拽到代码界面的@end和@interface之间
此时出现一个对话框(connect 表示连接的类型,文本框一般选默认 ,按钮一般选action;name为连接的组件的名字,自定义)点击connect就完成了组件和代码的连接
1、实现的一些效果:
      I、在自定义的界面FirstViewController的.m文件中 默认继承了父类的touchesBegan方法,重写次方法,实现点击屏幕,让输入键盘退下的效果
在.m文件中

//-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event//点击屏幕取消时调用的方法,即当你正在点击屏幕,此时来电话了所触发的方法

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event//点击屏幕时触发的事件

{

UITouch *t=[touches anyObject];//得到点击屏幕的位置

if (![t.viewisMemberOfClass:[UITextFieldclass]]) {//t.view isMemberOfClass:]判断点击的对象是不是输入框  UITextField class:不是输入框

//如果点击的组件不是输入框,就让键盘退下去

[self.uerNameresignFirstResponder];//取消掉userName的第一相应者(就是让userName组件失去焦点,不再屏幕上作为第一焦点出现)

//resignFirstResponder:取消第一相应者(即焦点)

[self.passWordresignFirstResponder];//同上

}

}

II、实现页面跳转的效果

同样在.m文件中   代码如下

//登陆按钮的监听事件

- (IBAction)login:(id)sender {

//如果用户名为admin,密码为123则进行跳转,跳转到second页面

//self:当前对象 self.uerName.text:取得当前页面的名为uerName的输入框中的输入的字符

if ([self.uerName.textisEqualToString:@"admin"]&&[self.passWord.textisEqualToString:@"123"])

{

SecondViewController *second=[[SecondViewControlleralloc]init];//创建第二个页面

//设置页面跳转的动画效果

second.modalTransitionStyle=UIModalTransitionStyleCoverVertical;//设置页面跳转的动画效果

//modalTransitionStyle的值为一个枚举类型其值有如下四个:

//        UIModalTransitionStyleCoverVertical = 0,//从下往上推送

//        UIModalTransitionStyleFlipHorizontal,//翻转

//        UIModalTransitionStyleCrossDissolve,//渐变

//        UIModalTransitionStylePartialCurl,//半翻页

[selfpresentViewController:secondanimated:YEScompletion:nil];//second为将要跳转的页面   animated:是否要有动画效果  completion:传递的参数

}

}


四、提示框组件

在自定义的SecondViewController页面的.m文件中添加button按钮,然后设置单击监听事件,单击时弹出提示框

在SecondViewController自定义界面的.m文件中代码如下:

- (void)viewDidLoad

{

[superviewDidLoad];

//设置提示框组件

//第一步、创建一个圆角按钮

UIButton *but=[UIButtonbuttonWithType:UIButtonTypeRoundedRect];

//第二步、设置组件属性

[but setTitle:@"点击这里" forState:UIControlStateNormal];//在普通状态下得title

[but addTarget:selfaction:@selector(showAlert)forControlEvents:UIControlEventTouchUpInside];//添加监听事件

but.,, , );//坐标大小

//第三步将组件添加到当前视图上

[self.viewaddSubview:but];

// Do any additional setup after loading the view from its nib.

}

//弹出提示函数  与调用组件中的selector函数名必须保持一致

-(void)showAlert

{

//UIAlertView 为提示框类   创建一个提示框组件

UIAlertView *alert=[[UIAlertViewalloc]initWithTitle:@"提示"message:@"你太聪明了,都写对了" delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"确定",nil];

[alert show];//弹出提示框

}




注:在资源中有附带的完整项目的源码

objective-III 窗口应用程序的更多相关文章

  1. 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案

    今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...

  2. Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。

    一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...

  3. 第一个Windows窗口应用程序

    学习目的 熟悉开发工具Visual C++ 6.0和MSDN 2001的使用. 应用Windows API函数, 手工编写具有最基本构成的Windows窗口应用程序(包含WinMain入口函数, 消息 ...

  4. VC无窗口控制台程序

    VC无窗口控制台程序 #pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartu ...

  5. MFC程序的启动过程——先全局对象theApp(第一入口),后WinMain(真正入口),会引爆pApp->InitInstance从而创建窗口(程序员入口)

    原文出自:http://blog.csdn.net/yuvmen/article/details/5877271 了解MFC程序的启动过程,对于初学者来讲,了学习MFC很有帮助:对于不常用VC的人来说 ...

  6. (二)Qt窗口应用程序Widget

    QMainWindow,QWidget,QDialog,这三基类都可以作为顶层窗口 QWidget:是所有窗口类的父类,功能最简单 QMainWindow:如果窗口需要菜单栏,工具栏,状态栏,就需要Q ...

  7. C# 窗口和程序的退出

    Application.Exit(); // 通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口. // 由 .NET Compact Framework 支持. Form.Close( ...

  8. Java学习笔记-13.创建窗口和程序片

    1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用. start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭):同样在 ...

  9. Qt在Windows下如何创建无CMD窗口控制台程序

    默认情况下,用Qt新建一个控制台程序,运行时会弹出CMD窗口.如何把窗口去掉呢? *.pro文件默认是这样的: TEMPLATE = app CONFIG += console CONFIG -= a ...

随机推荐

  1. Object-c中@private、@protected、@public解析

    Objective-C中,类的实例化变量的范围有@private.@protected.@public.他们代表的意思和C++中相同,只是前面添加了一个@符号.下面介绍一下他们代表的范围: 指令 意思 ...

  2. CodeForces 452C Magic Trick (排列组合)

    #include <iostream> #include <cstdio> #include<cmath> #include<algorithm> us ...

  3. UltraISO做U盘启动盘教程

    用UltraISO做U盘启动盘教程 注意:制作前请先备份u盘内重要文件 vista.win7系统需要以管理员身份运行UltraISO,其他系统直接运行即可 1.打开UltraISO选择iso镜像文件 ...

  4. 转--Windows下将jar包封装成服务程序

    http://www.cppblog.com/aurain/archive/2014/01/23/205534.aspx 1 准备 使用工具Procrun(http://commons.apache. ...

  5. 解压版本 Tomcat配置--转

    http://qsfwy.iteye.com/blog/429973 一 配置JDK 1.下载jdk下载后,解压,假设为D:\Program Files\Java\jdk1.5.0_08,要确保bin ...

  6. C++ typedef

    C++ typedef 作用:用来定义类型的同义词,用作类型的说明符. 用法:typedef typeName myTypeName; 使用目的:1. 为了隐藏特定类型的实现,强调使用类型的目的.2. ...

  7. Mysql数据库中 ,涉及事物,循环添加数据

    ),),   ) BEGIN declare cnt ; declare i ; declare growthid ; DECLARE t_error INTEGER DEFAULT ;  DECLA ...

  8. 上架app被拒原因总结

    1. Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound by ...

  9. linux历史发展

    1.什么是开源? 开源就是软件和源代码都是公开的. 可以修改(完善作者的代码)和创建自己的软件. 2.免费软件不同于自由软件,虽然它是免费的,但他不公布源代码,共享软件与免费软件有点类似,其初起是不收 ...

  10. 【图文教程】用“iz3d”软件将您的游戏打造为红蓝3D游戏。

    iz3d是一款能将普通3D游戏转换为红蓝3D游戏的软件.基本上支持所有游戏,或许没用过的人会认为这只是类似于播放器中的一个小功能,将平面图形做成“伪3D”红蓝效果. 实际上不是的,游戏与平面图的结构不 ...