如何使用控件创建可重用的子视图,而不使用xib文件

时间:2014-04-17 13:58:41

标签: objective-c uiview

我正在编写一个应用程序,并且有几个可以重复使用的视图(例如,包含文本字段,标签和按钮) 现在我想在“globalviews.m”文件中创建一次,并将其作为子视图添加到主视图中。 (我真的不喜欢界面构建器)

我可以轻松创建一个返回UIView的函数,其中包含组件,但我当然希望访问控件。

我希望有类似的东西(在使用的viewcontroller中使“searchview”全局化)

// making searchview a global thingy
UIView *seachview ;

// rest of code here and then in viewdidload:

UIView *seachview = [[UIView alloc] init] ;
searchview = [[globaviews alloc] thesearchviews_name] ;
[self addsubview:searchview] ;

但是我如何才能轻松访问内部控件。像:

NSString *something = searchview.textviewname.text ;

或者这是一个可怕的想法开始? 这就是我喜欢编码的方式......

1 个答案:

答案 0 :(得分:1)

您可以创建一个自定义类,它是UIView的子类。然后,您可以为每个控件添加属性(与添加NSStringNSNumber等的方式相同)。或者您可以创建公共方法来修改/获取数据。

e.g。

- (void)setTextFiledColour:(UIColor *)color;
- (NSString *)getTextFieldText;

我的个人意见(来自很多经验)是学习界面构建器并处理它。完全有可能做你想做的事,很多人都同意你并选择这样做。就个人而言,我从来没有见过它做得“正确”。这意味着它完成了自定义以创建自己的模式和方法,避免了多年的经验和测试,这已经进入了界面构建器提供的模式。

我发现故事板特别强调了一种非常特殊的模式和编码风格。我认为移开形式是一个巨大的错误,好像正确使用它有很大的潜力抽象出UI /代码,防止采取后来回来的捷径,最重要的是当别人需要改变它时,没有歧义,你不能错误地使用类名或变量名等。

我经常使用故事板并且尚未遇到问题,另一方面,我曾与那些坚持手工完成并且从未遇到过这么多问题的开发人员一起工作过,并对如何解决问题感到震惊长期以这种方式开发应用程序。

最后取决于你。

注意

您提到要创建视图并重复使用它。它也可以在.xib文件中执行此操作并以此方式重用它。失去一些故事板的能力,但可能会给你一些两个世界。