为两个不同的视图控制器和数组使用框架

Posted

技术标签:

【中文标题】为两个不同的视图控制器和数组使用框架【英文标题】:using a framework for two different view controllers and array 【发布时间】:2016-12-05 06:04:33 【问题描述】:

我正在使用cwRichardKim/TinderSimpleSwipeCards。它在我的First view controller 上运行良好。现在我想在具有不同JSON 数组的不同视图控制器中使用它。我怎样才能做到这一点?这就是我在first ViewController 中的做法:

   CGRect frame = self.invitationViewContainer.frame;
    //frame.origin.y = -self.view.frame.size.height; //optional: if you want the view to drop down
       DraggableViewBackground *draggableBackground =     [[DraggableViewBackground alloc]initWithFrame:frame];
    draggableBackground.alpha = 0; //optional: if you want the view to fade in

    [draggableBackground loadCards:_arrAllCards];

    [self.invitationViewContainer addSubview:draggableBackground];

DraggableViewBackground ViewClass

   -(void)loadCards:(NSArray*)array
   

    exampleCardLabels = array;


     if([exampleCardLabels count] > 0) 
    NSInteger numLoadedCardsCap =(([exampleCardLabels count] >  MAX_BUFFER_SIZE)?MAX_BUFFER_SIZE:[exampleCardLabels count]);
     //%%% if the buffer size is greater than the data size, there will be an array error, so this makes sure that doesn't happen



       //%%% loops through the exampleCardsLabels array to create a card for each label.  This should be customized by removing "exampleCardLabels" with your own array of data
       for (int i = 0; i<[exampleCardLabels count]; i++) 
        DraggableView* newCard = [self createDraggableViewWithDataAtIndex:i];
        [allCards addObject:newCard];

        if (i<numLoadedCardsCap) 
            //%%% adds a small number of cards to be loaded
            [loadedCards addObject:newCard];
        
    

对于不同的 JSON 数组,我可以使用相同的类还是必须创建不同的类?

【问题讨论】:

没有正确回答您的问题! 是的,您可以将此类与不同的 JSON 数组一起使用。 那怎么用...@SaurabhJain 【参考方案1】:

您可以为多个视图控制器使用相同的 DraggableViewBackground 类。您只需要从这一行更改数组,

[draggableBackground loadCards: yourArray];

如果你想改变卡片的设计和数据,你可以使用另一个 DraggableViewBackground 类。将 DraggableViewBackground 中的所有方法复制到新的 DraggableViewBackground 类中。

在新的 DraggableViewBackground.m 中根据您的设计更改 -(void)setupView 方法。 根据您的数据更改-(DraggableView *)createDraggableViewWithDataAtIndex:(NSInteger)index 方法。

并使用新的 DraggableViewBackground 类到您的 secondViewController。

【讨论】:

好的,但是卡片上出现的数据也需要根据模型进行更改......我们可以用它做什么 MGInvitationModel *model = [self.exampleCardLabels objectAtIndex:index]; namelabel.text = model.senderName; 没有正确回答您的问题。你想改变卡片的设计吗?

以上是关于为两个不同的视图控制器和数组使用框架的主要内容,如果未能解决你的问题,请参考以下文章

一个视图控制器,纵向和横向两个视图

iOS 8 和 7 上的视图框架不同

如何使用核心数据访问保存在不同视图控制器中的数组?

使用导航控制器将视图复制到项目 - “图像视图”的框架在运行时会有所不同

iOS ChildViewController 有不同的视图

使用程序化自动布局时容器视图的框架设置为 CGRectZero