【问题标题】:Common views in viewControllers - Code re-usabilityviewControllers 中的常见视图 - 代码可重用性
【发布时间】:2012-04-09 11:15:44
【问题描述】:

在我的大多数 viewControllers 中,我几乎没有共同的视图。我注意到的是,我可以为所有 viewControllers 重用单个代码,这绝对是明智的。为此,我决定创建一个类 Utils,它具有像

这样的静态方法
+(void)createCommonViews:(float)yAxis:(NSString*)text;  

在我的例子中,常见的视图是三个标签和两个图像。

问题:我无法从 Utils 添加这些视图。我想知道如何将 self 作为参数发送,以便我可以从 Utils 添加视图。在 viewController 之外添加视图可能是错误的。在那种情况下,有什么解决办法?在UIView 中获取所有这些视图,将Utils 方法的返回类型设置为UIView,然后将UIView 添加到viewController(在从 调用方法之后viewController) 可能会解决我的问题。但我正在寻找的是一些 other 解决方案。

【问题讨论】:

    标签: iphone ios


    【解决方案1】:
    +(void) createCommonViews:(float)yAxis withText:(NSString*) text toTarget:(UIViewController*) target
    {
    //create views
        [target addSuview:view];
    }
    

    但我认为返回一个 Uiview 然后在 UIViewController 中添加它是一个更好的解决方案。

    【讨论】:

      【解决方案2】:

      您尝试的方法是将您的视图对象作为单例。这充其量是不常见的,最坏的情况是等待发生的崩溃。更好的设计是让每个视图控制器类都有自己的自定义视图实例,如下所示:

      @interface MyCommonView : UIView
      
      // ...
      
      @end
      
      
      
      @interface MyViewController_A : UIViewController {
         MyCommonView *commonView;
      }
      
      @property (strong, nonatomic) IBOutlet MyCommonView *commonView;
      
      @end
      
      
      
      // Meanwhile somewhere else...
      
      
      
      @interface MyViewController_B : UIViewController {
         MyCommonView *commonView;
      }
      
      @property (strong, nonatomic) IBOutlet MyCommonView *commonView;
      
      @end
      

      【讨论】:

        【解决方案3】:

        创建一个 viewController 作为所有常见内容的父视图,将其命名为 CommonViewController,然后在您希望它出现的所有视图控制器中实现它

        -(void) viewDidLoad 
        {
           [self.view addSubView:[[CommonViewController alloc] initWithRect:..];
        }
        

        或者使用 xib 文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-20
          • 2015-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多