Objective-C 继承新的认识以及作用

本文深入探讨了iOS开发中继承的概念,并通过实例展示了如何在ParentClassController类中实现NavigationView自定义功能,包括返回键、分享功能及初始化界面等。详细介绍了初始化变量、界面、数据和导航栏信息的设置过程,以及如何在子类中继承并使用这些功能。

iOS 三大特性 继承 多态 以及 封装

下面就是对继承的更为深刻的认识。

假如你准备重写NavigationView 那么就需要让其自动生成返回键 以及其他功能。

如:

#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.
}

下面这个类继承了

#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的基类

        只要继承该类就会自动生成返回键以及分享功能


注意:在继承的时候,如果遇到调用两次方法  那么可能你在子类中调用了该方法。并且你在

子类中的viewDidLoad中调用了[super viewDidLoad];

那么子类重写了父类的方法那么你调用[super viewDidLoad]

在子类中就不要在调用重写的方法了,因为[super viewDidLoad]已经调用过了。


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

}


转载于:https://my.oschina.net/u/2483781/blog/645030

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值