首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >故事板两个场景。将文本从场景2中的UITableViewCell转换到场景1中的UILabel

故事板两个场景。将文本从场景2中的UITableViewCell转换到场景1中的UILabel
EN

Stack Overflow用户
提问于 2013-01-01 00:09:31
回答 1查看 236关注 0票数 0

我在故事板上有两个场景。由于我不被允许上传图片(新用户),我们称它们为场景1和场景2。

场景1:带有UILabel的UITableViewCell,当选中此单元格时,它会将您带到场景2。

场景2:为用户提供在UITableView中选择的选项。一旦选择了一个选项,它就会在选定的UITableViewCell旁边放置一个复选标记。

如何获取当您在场景2上单击保存按钮时,它会从场景2中选择的UITableViewCell中获取文本,并将用户带回场景1,并使用场景2中的文本填充UILabel?

我使用故事板来创建UITableViews。每个单元格都有自己的类。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-01 00:31:25

使用委托设计模式允许两个对象相互通信(Apple reference)。

一般而言:

  1. 在场景2中创建一个名为selection.
  2. Allow的属性,该协议定义场景2代理必须定义的方法。在从场景1到2的分段之前,将场景1设置为场景2的代理。
  3. 当在场景2中选择单元格时,向场景2的代理发送一条消息,以通知场景2的代理selection.
  4. Allow代理处理选择,并在做出选择后退出场景2。

举个例子:

场景2界面

代码语言:javascript
复制
@class LabelSelectionTableViewController

@protocol LabelSelectionTableViewControllerDelegate
  - (void)labelSelectionTableViewController:(LabelSelectionTableViewController *)labelSelectionTableViewController didSelectOption:(NSString *)option;
@end

@interface LabelSelectionTableViewController : UITableViewController
  @property (nonatomic, strong) id <LabelSelectionTableViewControllerDelegate> delegate;
@end

场景2实现

代码语言:javascript
复制
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];   
  [self.delegate labelSelectionTableViewController:self didSelectOption:cell.textLabel.text];
}

场景1实现

代码语言:javascript
复制
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  if ([segue.destinationViewController isKindOfClass:[LabelSelectionTableViewController class]] == YES)
  {
    ((LabelSelectionTableViewController *)segue.destinationViewController).delegate = self;
  }
}

// a selection was made in scene 2
- (void)labelSelectionTableViewController:(LabelSelectionTableViewController *)labelSelectionTableViewController didSelectOption:(NSString *)option
{
  // update the model based on the option selected, if any    
  [self dismissViewControllerAnimated:YES completion:nil];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14103720

复制
相关文章

相似问题

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