打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
15、点击加号,弹出控制器。使用代理
一、代理的实现。

1.自己新建一个类。带.m和.h文件。
例如,新建好的类,如HMTabBar.在其内定义协议和代理。

HMTabBar .h文件如下。

#import <UIKit/UIKit.h>

@interface HMTabBar : UITabBar

@end

2、这里需要在.h中定义协议。定义的协议,和属性。

@class HMTabBar;

@protocol HMTabBarDelegate <NSObject>//代理的名称:类名+Delegate

@optional

- (void)tabBarDidClickedPlusButton:(HMTabBar *)tabBar;//这是要代理要实现的方法。

@end


3、添加代理之后,完整的.h如下。

#import <UIKit/UIKit.h>

@class HMTabBar;

@protocol HMTabBarDelegate <NSObject>

@optional

- (void)tabBarDidClickedPlusButton:(HMTabBar *)tabBar;

@end



@interface HMTabBar : UITabBar

@property (nonatomic, weak) id<HMTabBarDelegate> delegate;

@end


4、.m文件跟平时的.m文件一下,设置跟平时一样。哪个类控制器需要这个代理。就要遵守响应的协议和代理。

.m文件内会有通知代理这一步骤。

// 通知代理

    if ([self.delegate respondsToSelector:@selector(tabBarDidClickedPlusButton:)]) {

        [self.delegate tabBarDidClickedPlusButton:self];

    }

5、哪个控制器需要这个代理,就要遵守这个代理。

这里,如HMTabBarViewController需要这个代理。

@interface HMTabBarViewController () <HMTabBarDelegate>


6、在HMTabBarViewController.m文件中需要设置代理。

// 创建自定义tabbar

    HMTabBar *customTabBar = [[HMTabBar alloc] init];

    customTabBar.delegate = self;//设置代理。



7、实现代理相应的方法,即遵守的协议。

#pragma mark - HMTabBarDelegate

- (void)tabBarDidClickedPlusButton:(HMTabBar *)tabBar

{

    // 弹出发微博控制器

    HMComposeViewController *compose = [[HMComposeViewController alloc] init];

    HMNavigationController *nav = [[HMNavigationController alloc] initWithRootViewController:compose];

    [self presentViewController:nav animated:YES completion:nil];

}

8、代理的设置整个步骤如上。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
object-c代理,协议,委托,数据源的解释
iOS 简单代理(delegate)实现
IOS实战之自定义转场动画详解
(6) iphone 开发 真正理解委托(delegate)与数据源(data source)
iPhone delegate 两界面传递数据
viewDidUnload 和 viewWillUnload 被废弃之后的内存警告处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服