一、再来说一个自定义tabbar的问题啊, 1.首先呢,这个tabbar,看起来好像效果是实现了,没有什么问题,但是说,从业务逻辑上来讲的话,这样做,是不太好的, 1)首先,我们去创建啊,我们自定义的一个UIView, UIView里边,有很多子控件,那么这个子控件,应该是写在你这个View里边的,你创建的时候,应该是在View里边的,不应该在外面,在Controller里面去创建控件,这样做是不对的,包括你的点击事件啊,都应该抽出来一个,这个tabbar啊,这个UIView, 2)我们应该自定义一个UIView,然后把里面的一部分代码,都应该写到这个UIView里面,才行,理解我的意思吗,就跟那个tabbarController一样啊,你去加载,你给tabbarController去加载子控制器, 那么,你创建子控制器啊,加载子控制器啊,这些话,都应该写在tabbarController里边, 下面也是一样的,你给tabbar,给我自定义的某一个UIView,去添加5个btn,那么,这5个btn的创建,也应该在这个UIView里面, 2.所以,这个时候呢,我们新建一个View, 在主框架的View文件夹里面,我们去新建一个UIView, 继承的是UIView,叫做HMTabBar, 那么,接下来啊,我们就要抽啊,抽,实际上,说白了,就是把这里边的这一坨代码,剪切到这个HMTabBar里边, 你抽东西的时候,怎么着去抽,你假如说,有一个功能,可能抽的时候,感觉不好写,那么,你就先用这种方式,实现了, 然后,再一个一个往里去搬, 1)我们需要先把这个btn的创建,放到这个里边, 先来看看,btn都做了哪些事情,我们看看这坨代码,都做了哪些事情, 1)首先,我创建了5个btn, 2)然后,每一个btn,给它设置了frame, 这一段儿代码,就是在设置frame,所以这一段儿代码,我应该写在layoutSubview里面, 因为我要设置它子控件的布局, 所以呢,我现在,第一,这个btn,我设置了frame, 2)然后,第二件事儿,我给它设置了图片, 3)第三件事儿,我监听了这个btn, 4)第四件事儿,点击这个btn的时候,我把控制器给切换一下, 我现在做了这四件事儿, 然后呢,我一件一件的往里放,就行了, 1)首先,我创建btn的时候,这一句话,应该写在tabbar里边, 我现在呢,要给tabbar写一个方法,只要我一调这个方法,它就能够帮我自动的创建btn、自动的帮我去设置图片、自动的帮我去监听这个btn, 都在这一个方法里边去写, 这个时候,我现在在HMTabBar.h里边,先来写这么一个方法, - (void)addButtonWith 我现在要把这两张图片,一块儿去传过来,