首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将UIViewController目标C中嵌套UICollectionViews中的子UICollectionViewCell的值传递给新的UICollectionViews

如何将UIViewController目标C中嵌套UICollectionViews中的子UICollectionViewCell的值传递给新的UICollectionViews
EN

Stack Overflow用户
提问于 2015-02-06 11:23:01
回答 2查看 206关注 0票数 0

我有UICollectionViewController和自定义UICollectionViewCell,其中包含子UICollectionView和自定义childUICollectionViewCell。

  • UICollectionViewController
    • UICollectionViewCell (parentCell)
      • UILable
      • UICollectionView
        • UICollectionViewCell(childCell)
          • UILable (valueLable)
          • UIButton (提交)

代码语言:javascript
代码运行次数:0
运行
复制
        - UICollectionViewCell(childCell) 
            - UILable (valueLable)
            - UIButton (Submit)

我想发送文本的"valueLable“点击”提交“按钮到新的UIViewController。请帮帮我..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-06 11:39:55

使用方法SubmissionDelegateProtocol创建协议-(void) submitWithValue:(NSString*)text;

您的UICollectionViewController实现(符合)协议。它应该为childViews提供这个方法来调用它。

在创建集合视图和进一步的集合及其集合视图时,您必须传递一个--比方说- sumbmitDelegate属性(或init参数),该属性包含对实现协议的UICollectionViewController的引用。

代码语言:javascript
代码运行次数:0
运行
复制
id <SubmissionDelegateProtocol> submissionDelegate;

当您使用情节提要时,prepareForSegue:方法是将更多信息传递给后续视图控制器的合适位置。但是,如果两个集合视图都使用与它们的ViewContoller相同的dataSource (正如树所建议的那样),那么它应该更容易一些。

这样,最终每个单元格都保持对视图控制器的(弱)引用。然后,在按下按钮操作时,调用委托方法[submissionDelegate submitWithValue:valueLable ];

这是代表的模式。

或者,您可以使用通知。

票数 0
EN

Stack Overflow用户

发布于 2015-02-06 11:54:23

试试NSNotification Center

在子视图控制器中,postNotifictaion

UIViewController中,请收听相同的通知。

您还可以使用NSNotificationCenter传递数据。

代码语言:javascript
代码运行次数:0
运行
复制
- (void) submitButtonClicked
{

    [[NSNotificationCenter defaultCenter] postNotificationName:@"dataFromChildToParent"  object:nil userInfo: valueLable.text];
}

UIViewController的ViewDidLoad方法中

代码语言:javascript
代码运行次数:0
运行
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadRegistrationNotification:) name:@"dataFromChildToParent" object:nil];

并实现选择器。

代码语言:javascript
代码运行次数:0
运行
复制
- (void) loadRegistrationNotification:(NSNotification *)noti {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"dataFromChildToParent" object:nil];

    NSString *valueLabelText = [noti userInfo];
    NSLog(@"Notification data %@", valueLabelText);
}

有关NSNotificationCenter的详细说明,请参阅此教程

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28364672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档