Objective-C 繼承新的認識以及做用

iOS 三大特性 繼承 多態 以及 封裝ide

下面就是對繼承的更爲深入的認識。動畫

假如你準備重寫NavigationView 那麼就須要讓其自動生成返回鍵 以及其餘功能。atom

如:url

#import <UIKit/UIKit.h>

@interface ParentClassController : UIViewController
@property(nonatomic,strong)UIView * NavigationView;//頭部導航欄
@property(nonatomic,strong)UIButton * NavigationBack;//返回上級菜單
@property(nonatomic,strong)UILabel * TitleName;//標題

@property(nonatomic,strong)UIButton * Share;//分享


-(void)initVariable;//初始化變量
-(void)initView;//初始化界面
-(void)initData;//初始化數據
-(void)setNavigationItems;//設置導航欄信息
#import "ParentClassController.h"

@interface ParentClassController ()

@end

@implementation ParentClassController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initVariable];    
    [self initData];
    [self initView];
    [self setNavigationItems];
}
#pragma mark--初始化變量
-(void)initVariable{
    
}
#pragma mark--初始化界面
-(void)initView{
    /*
     跳轉模式:原生4種
     1. 默認:UIModalTransitionStyleCoverVertical 上下彈出
     2.UIModalTransitionStyleFlipHorizontal 翻轉
     3.UIModalTransitionStyleCrossDissolve  淡入
     4.UIModalTransitionStylePartialCurl 翻頁動畫
     */
}
#pragma mark--初始化數據
-(void)initData{
    
}


#pragma mark--設置導航欄信息
-(void)setNavigationItems{
    //基類最基礎的返回 主題 以及去購物車
    //導航
    _NavigationView=[[UIView alloc]initWithFrame:CM(0, 20, VIEW_WIDTH, 44)];
    _NavigationView.backgroundColor=UINavigationColor;
    _NavigationView.layer.borderWidth=0.4;
    _NavigationView.layer.borderColor=[UIColor grayColor].CGColor;
    [self.view addSubview:_NavigationView];
    
    //返回
    _NavigationBack=[UIButton buttonWithType:UIButtonTypeCustom];
    _NavigationBack.tag=1;
    _NavigationBack.frame=CM(10, 10, 25, 25);
    UIImage *imgMenu =[[UIImage imageNamed:@"Back"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [_NavigationBack setImage:imgMenu forState:UIControlStateNormal];
    [_NavigationBack setImage:[UIImage imageNamed:@"back-1" ]forState:UIControlStateHighlighted];
    
    [_NavigationBack addTarget:self action:@selector(HomeNavigationButton:) forControlEvents:UIControlEventTouchUpInside];
    [self.NavigationView addSubview:_NavigationBack];    
    //主題
    _TitleName=[[UILabel alloc]initWithFrame:CM(VIEW_WIDTH/2-50, 12, 100, 20)];
    _TitleName.text=@"海濤展現廳";
    _TitleName.textColor=[UIColor whiteColor];
    _TitleName.textAlignment = NSTextAlignmentCenter;
    [self.NavigationView addSubview:_TitleName];
    
    //分享
    _Share=[[UIButton alloc]initWithFrame:CM(VIEW_WIDTH-40, 10, 25, 25)];
    _Share.tag=2;
    UIImage * imageShare=[[UIImage imageNamed:@"分享" ]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [_Share setImage:imageShare forState:UIControlStateNormal];
    [_Share setImage:[UIImage imageNamed:@"分享-1"] forState:UIControlStateHighlighted];
    [self.NavigationView addSubview:_Share];
    [_Share addTarget:self action:@selector(HomeNavigationButton:) forControlEvents:UIControlEventTouchUpInside];
    self.view.backgroundColor=[UIColor whiteColor];
        
    
    
}

#pragma mark--界面按鈕
-(void)HomeNavigationButton:(UIButton *)sender{
    
    switch (sender.tag) {
        case 0:
        {
            
        }
            break;
        case 1:
        {
            // 返回上一級
            [self dismissViewControllerAnimated:YES completion:nil];
            // 返回首頁[self.navigationController popToRootViewControllerAnimated:YES];
            NSLog(@"返回");
        }
        case 2:
        {
            NSLog(@"分享");
        }
        default:
            break;
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

下面這個類繼承了spa

#import <UIKit/UIKit.h>
                                  //注意繼承
@interface SearchViewController : ParentClassController

@end
//
//  Created by 杭州晶泰電子商務有限公司 on 16/3/16.
//  Copyright © 2016年 杭州晶泰電子商務有限公司. All rights reserved.
//

#import "SearchViewController.h"

@interface SearchViewController ()

@end

@implementation SearchViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
   
}

這個類就是就是一個全部的Controller的基類
code

        只要繼承該類就會自動生成返回鍵以及分享功能orm


注意:在繼承的時候,若是遇到調用兩次方法  那麼可能你在子類中調用了該方法。而且你在繼承

子類中的viewDidLoad中調用了[super viewDidLoad];ip

那麼子類重寫了父類的方法那麼你調用[super viewDidLoad]get

在子類中就不要在調用重寫的方法了,由於[super viewDidLoad]已經調用過了。


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

}

相關文章
相關標籤/搜索