• 关于 AppDelegate 、UIApplication 简单的用法


    //AppDelegate.h  头文件 
    
    #import <UIKit/UIKit.h>
    
    
    @class SwitchViewController;
    
    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    {
        UIApplication *mApp;   //新建一个UIApplication对象
    }
    
    @property (strong, nonatomic) UIWindow *window;
    
    
    @property (nonatomic, retain) SwitchViewController *switchViewController; //为窗口转换的类
    
    
    @end
    #import "AppDelegate.h"
    
    #import "SwitchViewController.h"
    
    @implementation AppDelegate
    
    @synthesize window = _window;
    @synthesize switchViewController;
    
    - (void)dealloc
    {
        [_window release];
        [switchViewController release];
        mApp.idleTimerDisabled = NO;
        [super dealloc];
    }
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        //初始化
        switchViewController = [[SwitchViewController alloc]init];
        
        //这两句话效果一样
        //[[self window]setRootViewController:switchViewController];
        self.window.rootViewController = self.switchViewController;
        
        [switchViewController release];
        mApp = application;
        application.idleTimerDisabled = YES;
        [[self window]makeKeyAndVisible];  //或[self.window makeKeyAndVisible];
        
        return YES;
       
    }
    @end



    //SwitchViewController 类头文件。集中实现窗口跳转
    
    #import <UIKit/UIKit.h>
    #import "ViewTestone.h"
    #import "ViewController.h"
    @class ViewTestone;     //View
    @class ViewController;  //View
    
    
    typedef int RequestId;
    
    enum REQUESTVIEW 
    {
        REQUEST_TESTONEVIEW,
    };
    
    @interface SwitchViewController :UIViewController
    {
        
    }
    @property (nonatomic, retain)ViewTestone *viewTestone;
    @property (nonatomic, retain) UIViewController *previousViewController;
    @property (nonatomic, retain)ViewController *viewController;
    
    -(void)switchToView:(RequestId)requestId;
    
    -(void)gotoTestoneView;   //跳转到TestoneView
    
    @end
    //SwitchViewController.m  文件
    #import "SwitchViewController.h"
    
    @implementation SwitchViewController
    {
        
    }
    @synthesize viewTestone;
    @synthesize previousViewController;
    @synthesize viewController;
    
    //当程序加载完AppDelegate里的 didFinishLaunchingWithOptions 方法后就会跳到这里 .下面可把ViewController实现为默认的View加载
    -(void)viewDidLoad
    {
        NSLog(@"----------");
        if(self.viewController ==nil)
        {
            //新建VIEWCONTRollerr 的一个对象
            ViewController *viewcontroll = [[ViewController alloc]initWithNibName:@"ViewConTroller" bundle:nil];
            self.viewController = viewcontroll;
            [viewcontroll release];
        }
        [self.view insertSubview:viewController.view atIndex:0];
        self.previousViewController = self.viewController;
    }
    
    -(void)viewDidUnload
    {
        self.viewController = nil;
        self.viewTestone    = nil;
        [super viewDidLoad];
    }
    
    -(void)dealloc
    {
        [viewTestone release];
        [viewController release];
        [super dealloc];
    }
    
    //下面具体实现view之间的跳转。一般的程序都会有很多个这样的窗口跳转。所以把它们集中在一个公共的类里面这样会拿的代码看上去很简洁。明了,
    -(void)switchToView:(RequestId)requestId
    {
        switch (requestId) {
            case REQUEST_TESTONEVIEW:
                [self gotoTestoneView];
                break;
             //....................   
            default:
                break;
        }
    }
    
    //这就到了具体到某一个窗口之间的跳转了。
    -(void)gotoTestoneView
    {
        NSLog(@"test ok~");
        if(self.viewTestone ==nil)
        {
            ViewTestone *testOneView = [[ViewTestone alloc]initWithNibName:@"ViewTestone" bundle:nil];
            self.viewTestone = testOneView;
            [testOneView release];
        }
        if(self.previousViewController.view.superview !=nil)
        {
            [previousViewController.view removeFromSuperview];
        }
        [self.view insertSubview:viewTestone.view atIndex:0];
        self.previousViewController = [self viewTestone];
    }
    
    @end
    //具体的实现方法。。应用~
    
    -(void)addButtonToNewView
    {
        //新建一个按键 
        UIButton *toviewBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        //设置按钮的背景颜色 UIControlStateNormal按钮按之前的颜色   UIControlStateHighlighted反之
        [toviewBtn setImage:[UIImage imageNamed:@"v_exit.png"]forState:UIControlStateNormal ] ;
        //CGRect r;
        //r = CGRectMake(120, 300, 100, 30);
        //设置按钮的大小
        toviewBtn.frame = CGRectMake(120, 300, 100, 30);;
        //为按钮添加事件
        [toviewBtn addTarget:self action:@selector(toOntViewPress:) forControlEvents:UIControlEventTouchUpInside];
        //加载到当前的view
        [self.view addSubview:toviewBtn];
    }
    
    -(void)toOntViewPress:(id)sender
    {
        NSLog(@"successfull");
        //前面长长的AppDelegate   SwitchViewController 都是为了下面这两句话。两句话就可以轻松的跳转到你想要去的页面。这样就显得很方便。
        AppDelegate *app = [[UIApplication sharedApplication]delegate];
        [app.switchViewController switchToView:0];
    }
  • 相关阅读:
    就打排序算法总结
    php 垃圾回收机制写时复制和引用计数
    zend studio 使用断点调试
    SiteServer 迁移至 Windows 2008 R2 问题汇总
    [项目改造中的点滴]C#中IDataReader和DataSet的区别与使用场景
    顺序分支知识总结
    我的第一篇博客
    [原创]删除GRUB引导恢复Windows引导,不用下载任何工具
    在C++builder中使用正则表达式,非boost库,简单!~
    SQL 存储过程优化经验
  • 原文地址:https://www.cnblogs.com/qingjoin/p/2621785.html
Copyright © 2020-2023  润新知