zoukankan      html  css  js  c++  java
  • 关于 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];
    }
  • 相关阅读:
    krpano--控制热点跳转到场景的指定视角
    bzoj 4237: 稻草人 -- CDQ分治
    bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演
    bzoj 3545/3551: [ONTAK2010]Peaks -- 主席树,最小生成树,倍增
    bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树
    bzoj 1901: Zju2112 Dynamic Rankings -- 主席树,树状数组,哈希
    bzoj 3252: 攻略 -- 长链剖分+贪心
    bzoj 5055: 膜法师 -- 树状数组
    bzoj 1006: [HNOI2008]神奇的国度 -- 弦图(最大势算法)
    bzoj 1176: [Balkan2007]Mokia&&2683: 简单题 -- cdq分治
  • 原文地址:https://www.cnblogs.com/qingjoin/p/2621785.html
Copyright © 2011-2022 走看看