我正在编写一个测试项目,学习用代码编写所有内容。我想这样做,这样我就可以更好地理解故事板中的元素在幕后为我做什么
在我的项目中,我有几个共享相同UI元素的UIViewControllers。例如,我在屏幕顶部有一个UITool栏,里面有几个按钮。
现在我想将UIToolbar放在一个单独的类中,这样我就不必全部写出来或者将其粘贴到每个控制器中。
现在我知道我可以做到这一点:
#import "General_Add_ons.h" //the UIToolbar is properly set up in this file
@interface FirstViewController : General_Add_ons
然后我只使用[self topToolBar];
// topToolBar是工具栏的名称
现在我只是想澄清这是最好的还是唯一的方法?
不知怎的,我觉得我应该能够做到这一点:
General_Add_ons *gao = [[General_Add_ons alloc] init];
[gao topToolbar];
我是否以错误的方式思考这个问题?第一种方式似乎是限制,以防我有多个外部类。
提前致谢。
答案 0 :(得分:1)
你的方法似乎是正确的。如果您有多个UIViewController
个实例需要相同的UI元素或其他控制器代码,则可以将这些元素放在UIViewController
子类中。在您的情况下,我认为类General_Add_ons
是您的子类将继承的UIViewController
。
此类(您的General_add_ons
)应具有可重复使用工具栏的属性,例如
@property (nonatomic, strong) UIToolbar *toolbar;
顺便说一句,按照惯例,Cocoa中的类名是:前缀+大写单词,没有下划线。 Apple对naming conventions有很好的参考。
修改强>
为了澄清,您可以根据需要将自定义子类子类化。例如,在我的代码中,我有一个类CCFViewController
,它封装了我希望所有视图控制器都具有的常见属性和行为。然后,在项目中,所有视图控制器都从该父控制器继承。同样,您的工具栏将存在于超类中,而其他控制器将继承它。
答案 1 :(得分:0)
我不是100%肯定,但我认为你应该这样试试:
General_Add_ons *gao = [[General_Add_ons alloc] init];
[gao.topToolbar anypossiblemethodcall];