应用程序代理类

WKAppDelegate.m

//
// WKAppDelegate.m
// HelloWorld
//
// Created by easy5 on 13-9-18.
// Copyright (c) 2013年 easy5. All rights reserved.
// #import "WKAppDelegate.h" #import "WKViewController.h" @implementation WKAppDelegate - (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
} //应用程序加载完毕以后调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch. //传入xib文件初始化控制器
self.viewController = [[[WKViewController alloc] initWithNibName:@"WKViewController" bundle:nil] autorelease]; //self.window.rootViewController = self.viewController;
//已经执行了
//[self.window addSubview:self.viewController.view]
self.window.rootViewController = self.viewController; //show the main window
//让窗口成为主窗口,只有主窗口才能与用户进行交互
[self.window makeKeyAndVisible]; return YES;
} //应用程序失去焦点时调用
- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
} //应用程序进入后台(点击Home键)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
} //应用程序进入前台
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
} //应用程序程序获取焦点(获取焦点后才能跟用户进行交互)
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
} //当程序被关闭
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
} @end

xib生成界面和代码生成界面两种方式混合发现的问题:

1.在init方法里面代码生成的界面元素无法显示在控制器的View上;

2.重载loadView方法会造成死循环。

故把用代码生成界面元素放在(控制器的)viewDidLoad中。

WKViewController.h

//
// WKViewController.h
// HelloWorld
//
// Created by easy5 on 13-9-18.
// Copyright (c) 2013年 easy5. All rights reserved.
// #import <UIKit/UIKit.h>
#import <UIKit/UIButton.h> @interface WKViewController : UIViewController{
//不从xib生成空件
UIButton *_endWorldButton;
UIAlertView *_endWorldAlterView;
} //UI界面不用管理内存,所以用assign
//如果用retain,就得自己 release
//IBOutlet让属性出现在xib文件中
@property(nonatomic, assign) IBOutlet UITextField *qq;
@property(nonatomic, assign) IBOutlet UITextField *pwd; //等价于- (void)login;
//IBAction就void,而且让方法出现在xib文件中
- (IBAction)login; @end

WKViewController.m

不明白的是Xcode自动生成的WKViewController.m中又对WKViewController声明了一次

@interface WKViewController ()

@end

类WKViewController不是在头文件WKViewController.h中已经声明过了吗?!!!真搞不懂。

//
// WKViewController.m
// HelloWorld
//
// Created by easy5 on 13-9-18.
// Copyright (c) 2013年 easy5. All rights reserved.
// #import "WKViewController.h" @interface WKViewController () @end @implementation WKViewController //- (id) init {
// self = [super init];
// if (nil != self) { //} // return self;
//} - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. _endWorldButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
CGRect _endBtnFrame = CGRectMake(, , , );
_endWorldButton.frame = _endBtnFrame;
[self.view addSubview:_endWorldButton]; [_endWorldButton addTarget:self action:@selector(endWorldClick:) forControlEvents:UIControlEventTouchUpInside];
} - (void)endWorldClick:(id)sender{
UIButton *button = (UIButton *)sender;
if (button == _endWorldButton) {
NSLog(@"End World!"); _endWorldAlterView = [[UIAlertView alloc] initWithTitle:@"end world now" message:@"Really?" delegate:self cancelButtonTitle:@"NO" otherButtonTitles:@"OK", nil]; [_endWorldAlterView addButtonWithTitle:@"wuliao1"];
[_endWorldAlterView addButtonWithTitle:@"wuliao2"];
[_endWorldAlterView addButtonWithTitle:@"wuliao3"]; [_endWorldAlterView show]; } }
- (void) alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttionIndex {
NSLog(@"clicked %i", buttionIndex); if (alertView == _endWorldAlterView) {
UIAlertView *subAlterView = [[UIAlertView alloc] initWithTitle:@"Which you had choiced" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; if (buttionIndex == ) {
subAlterView.message = @"下次小心点";
}
else if (buttionIndex == ){
subAlterView.message = @"OMG! 你真炸了";
}
else {
subAlterView.message = @"你TMD真无聊!";
} [subAlterView show];
[subAlterView release];
}
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (IBAction)login{
NSLog(@"hello world!");
NSLog(@"QQ=%@, PWD=%@", _qq.text, _pwd.text); [self.view endEditing:YES];
}
- (void) dealloc {
[_endWorldButton dealloc];
[_endWorldAlterView release]; [super dealloc];
} @end

IOS xib生成界面和代码生成界面两种方式混合的更多相关文章

  1. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

  2. Docker镜像构建的两种方式

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行 ...

  3. ios 实现跳转到评价界面的两种方式

    要想在App内跳转到特定App的详情页或者评论页,首先需要获取到App的id.在 iTunes Connect网站上登陆之后,选择“我的App”,然后点击某个特定的App进入,在App信息的综合信息中 ...

  4. iOS打包为ipa的两种方式和生成P12证书的方式

    iOS项目打包为ipa的两种方式: 准备工作:先行在Xcode里面打开preferences,填写apple id. 通过iTunes+Xcode 在Xcode里,把模拟器调整为iOS Device, ...

  5. centos安装图形界面通常有两种方式

    centos安装图形界面通常有两种方式   1.通过系统安装,在配置选择软件界面,选择GNOME桌面模式.

  6. 两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  7. ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

    最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...

  8. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  9. maven生成war包的两种方式

    war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...

随机推荐

  1. 第四篇、CocoaPods 镜像的更新 原来的淘宝镜像已经不再更新

    在开发应用,我们常常使用cocoaPods来管理第三方框架,但是原来的淘宝的镜像不更新了 新的镜像地址:https://gems.ruby-china.org/

  2. 第七篇、使用UIView的animateWithDuration方法制作简易动画

    import UIKit class LolitaCircleButton: UIButton { private var color: UIColor private var imageURL: S ...

  3. OC6_复合类的类存管理

    // // Person.h // OC6_复合类的类存管理 // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhan ...

  4. lex&yacc6 ---error

    类的检测 http://blog.csdn.net/pandaxcl/article/details/1536784

  5. socket设置为非阻塞方式(windows和linux)

    Windows用以下方法将socket设置为非阻塞方式 : unsigned long ul=1; SOCKET s=socket(AF_INET,SOCK_STREAM,0); int ret=io ...

  6. 停车场管理软件附带源代码 J2EE服务端+android客户端

    该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1  机构管理 ,机构有从属管理< ...

  7. 在Windows 7下面IIS7的安装和 配置ASP的正确方法

    在Windows 7下如何安装IIS7,以及IIS7在安装过程中的一些需要注意的设置,以及在IIS7下配置ASP的正确方法. 一.进入Windows 7的 控制面板,选择左侧的打开或关闭Windows ...

  8. flex 弹性盒子模型一些案例.html

    Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flex元素是可以让你的布局根据浏览器的大小变化进行自动伸缩. 自适应导航 <ul class="navi ...

  9. php版获取重定向后地址的代码分享

    如何获取重定向的地址呢?我们用php实现这样的功能,分享下我的代码,有需要的朋友参考下. 代码如下: <?php //取重定向的地址 class RedirectUrl{ //地址 var $u ...

  10. 解决CxGrid Filter 后,通过 Dataset 循环时得出的结果与 Grid显示不同步的问题.

    // 方案1: 强制cxgrid 使用 dataset的 Filter GridMaster.DataController.Filter.AutoDataSetFilter := True; /// ...