我有几个视图控制器(或者具体来说是tableview控制器),所有这些视图控制器都使用可以在数据访问运行时显示的相同视图(加载视图)。
目前,我在所有这些视图控制器中都有相同的代码:
// Loading the loading view
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"loadingView" owner:nil options:nil];
loadingView = [nibContents lastObject];
[self.view addSubview:loadingView];
我还使用toast视图显示控制器中操作后的成功或错误。
我的问题是,避免代码复制/粘贴的正确方法是什么?
我尝试过类别: 似乎无法工作,因为我无法将引用存储到加载视图。
我也尝试过继承,但没有太大的成功(子控制器不能识别父视图控制器的属性(加载视图))。
你能指引我做正确的方法吗? 我将故事板和NIB文件用于特定视图(加载和转发)。
提前致谢。
答案 0 :(得分:0)
我尝试了类别:似乎没有用,因为我无法将引用存储到加载视图。
查看控制器类别,或者您正在显示的视图上的类方法,是解决此问题的最佳方法。
您可以使用关联对象来保持对正在显示的视图的引用。如果您对这些变量持谨慎态度,可以使用static
变量来提供持久存储而无需属性或实例变量。这两个假设您只会一次显示一个加载视图或警报视图,这是预期的。
对于类别,您可以定义类似
的方法 -(void)setLoading:(BOOL)loading
在视图控制器上。这将有一个静态变量,它引用加载视图。如果您传递的是YES,您将创建视图,显示它并将其分配给静态(如果它尚未存在)。如果您传递NO,则删除视图并将静态设置为nil。