表视图控制器每一行连接到不同的视图控制器

2023-11-25

我正在尝试开发一个表视图控制器,其中行连接到多个View Controllers(文本字段、文本视图、表格视图、日期选择器、图像视图等)。

因此,如果我单击任何行,它应该打开Intermediate View并将适当的控制器放置在一个公共位置,其中所有控制器的其余部分都相同。假设我单击了索引映射到 TableView 的行。当它将打开中间控制器时,它应该将 tableview 放置在公共容器,此表视图应来自所有其他 Tableview 的单个 TableView 控制器。

我是ios新手,无法设计这个。

设计这个的最好方法是什么?我该如何实施?

Root Table View

enter image description here

Thanks


我建议不要在情节提要中创建单元格并连接它。相反,在故事板中保留空表并使用代码创建单元格。您可以通过子类化来创建自定义单元格UITableViewCell.

在故事板中,您只需使用 segue 将表视图与所有视图控制器链接起来并给予适当的标识符名称.

enter image description here

现在实现所有委托方法UITableView。覆盖-tableView:didSelectRowAtIndexPath:方法并在行选择时对特定行执行 segue。

Example:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    switch (indexPath.row) {
        case 0:
            [self performSegueWithIdentifier:@"BasicCoreDataSegue" sender:self];
            break;

        default:
            break;
    }
}

在上面的情况下,如果您选择第一行,它将推送与之连接的视图控制器BasicCoreDataSegue故事板中的segue,您可以将其与图像进行比较。

使用类似的方式创建其他segue并调用它们didSelectRowAtIndexPath不同开关情况下的方法。

另外,如果您想将任何值传递给推送控制器,请重写以下方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    if ([[segue identifier] isEqualToString:@"BasicCoreDataSegue"]) {
        // Get reference to the destination view controller
        TextViewController *vc = [segue destinationViewController];
        vc.textView.text = "Hello";
    }
} 

Edit:

上面的代码适用于普通控制器。现在你也不需要创建更多的seguesdidSelectRowAtIndexPath方法集中间控制器segue。

Use [self.tableView indexPathForSelectedRow]获取所选行的方法prepareForSegue method.

例如:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        [self performSegueWithIdentifier:@"BasicCoreDataSegue" sender:self];
}

现在,当prepareForSegue调用然后为中间控制器设置整数值。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        // Get the new view controller using [segue destinationViewController].

        // You can get selected row using below line
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        // Pass the selected object to the new view controller.
        if ([[segue identifier] isEqualToString:@"BasicCoreDataSegue"]) {
            // Get reference to the destination view controller
            IntermediateController *vc = [segue destinationViewController];
            vc.selectedIndex = indexPath.row;
        }
    }

在上面的代码中selectedIndex是一个整数变量,用于跟踪选择了哪一行。

现在在中间控制器中-viewDidLoad()使用 switch case 从行选择中获取所需的控制器对象,并将其视图添加为中间控制器中的子视图。

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle: nil];

TextViewController *controller = (TextViewController*)[storyBoard 
                    instantiateViewControllerWithIdentifier: @"TextViewControllerId"];

[self.topView addSubview:controller.view];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表视图控制器每一行连接到不同的视图控制器 的相关文章

随机推荐

  • ScrollView 内的 ViewPager 无法正确滚动

    我有一个 页面 上面有许多组件 并且其中的内容比设备的高度长 好吧 只需将所有布局 整个页面 放入一个ScrollView 没问题 其中一个组件是ViewPager 这可以正确渲染 但对滑动 猛击的响应无法正确执行 它很紧张并且并不总是有效
  • IE10选择框问题

    我在 IE10 中测试我的应用程序 发现选择框有一个奇怪的行为 所选选项会突出显示 上方 下方选项会显示在所选选项的上方 下方 下拉框被隐藏 这只发生在 IE10 中 在所有其他浏览器中 选项显示在选择框下方 在 IE10 和 IE9 中尝
  • 为什么我收到此错误:ConnectionString 属性尚未初始化

    我已经搜索并尝试了一切 但无法弄清楚这一点 我想做一些简单的事情 但似乎我做错了 基本上 任何已存款的用户 我想返回 true 如果没有 我想返回 false 我想这应该很容易 但我对此感到困惑 这是错误 ConnectionString
  • ECR事件后触发AWS lambda函数

    我试图让 AWS Lambda 函数在将新映像推送到 AWS 容器注册表时运行 我已经创建并测试了该功能 该功能运行良好 然后 我使用以下模式创建了一个简单的 CloudWatch 事件规则 source aws ecr 我相信 ECR 的
  • WiX 安装程序在卸载时不会删除文件

    我告诉 wix MSI 文件在卸载时删除文件 但它根本没有注册它 对于捆绑包 我将 MSI 文件称为
  • 选择和悬停覆盖 SWT 表组件中的单元格背景颜色

    我正在使用 SWT 和 Eclipse RCP 来呈现表格 我的问题是 如果我更改单元格 实际上是 ViewerCell 的背景 我可以看到它具有新的颜色 我的问题是 如果我在表中选择一行 或者将鼠标悬停在包含相关单元格的行上 则选择 悬停
  • 如何将两个列表合并为一个列表?

    I have a 1 2 b a b I want c 1 a 2 b j for i in zip a b for j in i
  • 如何在 Django/python 中每行循环三列?

    我想在 for 期间显示数据 每行三列 我希望我的结果如下所示 table tr td VALUE1 td td VALUE2 td td VALUE3 td tr tr td VALUE4 td lt td VALUE5 td td VA
  • 如何在 Swift 中制作引脚注释标注?

    我试图让标注工作 但没有发生 因为我在准备继续时做错了 我想知道如何能够对另一个视图进行引脚注释标注 当点击标注中的按钮时 跳转到另一个场景的过程如下 Set the delegate地图视图作为视图控制器 您可以在 Interface B
  • 包含所有私有成员的类可以是 POD 类吗?

    我之前听说过 POD 类型不能有私有数据 但根据 C 0x 草案 我的要求更宽松 强调我的 has the 相同的访问控制 第 11 条 对于所有非静态数据成员 这似乎表明私有数据只要是私有的就可以 我没有 C 03 的副本来检查 那么 W
  • 在完整框架 4.7 项目上添加对 .NET Core 2.0 DLL 的引用

    我在这里寻找这个问题但没有找到答案 我有一个针对 NET Core 2 0 的类库项目和一个针对 NET Full Framework 4 7 的 WPF 项目 我无法引用 WPF 项目上的类库 我收到以下错误 项目 xxxxxxxx 的目
  • 如何使用 IIS7 修复 CSS 文件内链接的 URL 重写

    我正在尝试为家里的朋友设置代理服务器 我目前正在关注网站上的教程 http blogs iis net carlosag archive 2010 04 01 setting up a reverse proxy using iis url
  • 将 NSTimer 的触发时间重置为从现在开始而不是上次触发

    我有一个NSTimer以 3 秒的间隔触发以减少值 当我执行增加该值的操作时 我想重新启动计时器 从该点开始计时 3 秒 例如 如果我增加该值并且计时器将在 1 秒内触发 我想更改它并让计时器在 3 秒内触发 我可以使计时器无效并重新创建它
  • 从Python中独立于操作系统的位置加载配置文件

    在Linux下我把我的配置放在 programname 中 我应该将其放置在 Windows 中的什么位置 在 python 中打开独立于操作系统的配置文件的推荐方法是什么 谢谢 内森 在 Windows 上 您将其存储在os enviro
  • 如何制作一个通过其他两个枚举器进行延迟迭代的 ruby​​ 枚举器?

    假设我有两个枚举器 enum1 and enum2必须延迟迭代 因为它们有副作用 如何构造第三个枚举器enum3 where enum3 each x x would lazily返回相当于enum1 enum2 在我的现实用例中 我正在流
  • 正确使用JTidy净化HTML

    我正在尝试使用 JTidy jtidy r938 jar 来清理输入 HTML 字符串 但我似乎无法正确设置默认设置 通常 诸如 hello world 之类的字符串在整理后最终会变成 helloworld 我想展示我在这里所做的事情 任何
  • 缓存一致性协议如何强制原子性?

    我知道原子性可以在诸如xsub 不使用LOCK前缀 依靠缓存一致性协议 MESI MESIF 1 缓存一致性协议如何做到这一点 这让我想知道缓存一致性协议是否可以强制原子性 为什么我们需要特殊的原子类型 指令等 2 如果MOSI实现跨多核系
  • Ruby on Rails+PostgreSQL:自定义序列的使用

    假设我有一个模型叫Transaction其中有一个 transaction code属性 我希望该属性自动填充一个序列号 该序列号可能不同于id 例如 与id 1可以有transaction code 1000 我尝试在 postgres
  • 是否有一个不使用回调的 $getJSON 版本?

    我正在为 3rdParty javascript 库实现回调 我需要返回该值 但我需要从服务器获取该值 我需要做这样的事情 3rdPartyObject getCustomValue function return getJSON myUr
  • 表视图控制器每一行连接到不同的视图控制器

    我正在尝试开发一个表视图控制器 其中行连接到多个View Controllers 文本字段 文本视图 表格视图 日期选择器 图像视图等 因此 如果我单击任何行 它应该打开Intermediate View并将适当的控制器放置在一个公共位置