为两个不同的视图控制器和数组使用框架
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; 没有正确回答您的问题。你想改变卡片的设计吗?以上是关于为两个不同的视图控制器和数组使用框架的主要内容,如果未能解决你的问题,请参考以下文章
使用导航控制器将视图复制到项目 - “图像视图”的框架在运行时会有所不同