【问题标题】:is it good to use ViewCntroller's view in icarousel?在icarousel中使用ViewCntroller的视图好不好?
【发布时间】:2014-04-21 06:08:29
【问题描述】:

carousel viewForItemAtIndex 我正在使用reuse view 类似的东西-

 -(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view{

if (!view){

   UIViewController * viewController = [self.storyboard  instantiateViewControllerWithIdentifier:@"PopUpView"];
   view = [viewController.view viewWithTag:1];
   CGRect  Frame = CGRectMake(view.frame.origin.x+300, view.frame.origin.y, view.frame.size.width+300, view.frame.size.height-350);
   view.frame = Frame;
}

这是一个好方法吗?

【问题讨论】:

  • 您也可以通过不每次都分配视图控制器来提高性能。为此,您需要将视图控制器缓存在 NSMutableArray 中,并在同一索引的下一次调用中重用它。

标签: ios uiviewcontroller icarousel


【解决方案1】:

我会说这不是一个好方法。您在这里创建视图控制器只是为了立即将其丢弃,这是没有意义的。

如果您只需要视图,则可以直接从 nib 文件加载它,而无需视图控制器。您可以将其操作绑定到轮播的主视图控制器(在库中包含的 ControlsExample 项目中有一个示例),或者创建自定义视图类并将子视图出口绑定到视图本身。

如果您想为每个轮播项目视图使用视图控制器(我不建议这样做,因为这不是用于 UITableView 或 UICollectionView 的约定,iCarousel 是基于该约定),那么您应该将视图控制器添加为主轮播控制器的子视图控制器,但这很繁琐,因为当子控制器的视图离开屏幕时,没有明显的地方可以再次删除子控制器)。

【讨论】:

    【解决方案2】:

    按照方法,使用视图控制器的视图没有任何问题。 UIView 是您处理外观的地方,UIViewController 是您处理事件的类。如果你想处理任何事件,那么使用 UIViewController 的 View 是一个更好的选择。

    【讨论】:

    • 但它是在一个viewController中实例化一个ViewController。真的没关系吗?
    • 不,在视图控制器中实例化视图控制器并没有错,但要确保它只实例化一次并在避免大量内存使用后在那里重用。
    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2019-01-21
    • 1970-01-01
    相关资源
    最近更新 更多