【发布时间】:2010-11-18 23:24:02
【问题描述】:
几个小时以来,我一直在寻找这个问题的解决方案,但我似乎无法找到在 Interface Builder 中构造 UITableViewCell、将其操作链接到父 UINavigationController 的方法,然后使用用于在 UITableView 的两个单独实例中显示信息的单元格。经过几个小时的研究,我的文件结构如下:
UIViewController,不是在 Interface Builder 中创建的,这是我整个项目的基本视图。包含将 UserInfoController 推入堆栈的 IBAction。
UITableViewCell,在 Interface Builder 中创建,它包含一个按钮,当按下该按钮时,它会推送一个新的 UIViewController,我们称之为 UserInfoController,位于堆栈顶部。 File's Owner 就是上面的 UIViewController。
UIView,在 Interface Builder 中创建,我在上面的 UIViewController 中使用。这个 UIView 包含一个带有数据的顶部 UIView 部分和一个显示 UITableViewCells 的底部 UITableView。我想这样当你按下 UITableViewCell 中显示在这个 UIView 中的按钮时,它会激活父 UIViewController 中的一个动作。
我觉得我在这里遗漏了一些重要的东西。我还想最终创建另一个带有 UIView 和 UITableView 的 UIViewController,它也应该使用 UITableViewCell 并执行第一个 UIViewController 的操作。但是,由于我什至无法根据我的观点来解决这个问题,所以我会等到解决上述问题。
编辑: 我的直觉告诉我这是奥特莱斯的问题。目前,我的 UIViewController 充当包含 UITableView 的 UIView 的文件所有者。 UIView 还包含 UITableViewDelegate 和 UITableViewDataSource 的代码,它使用我的 UITableViewCell 来显示相关信息。 UITableViewCell 是它自己的 Nib,但它的文件所有者也是 UIViewController。但是,当我按下 UITableViewCell 中的按钮时,事件会向 UIView 注册,尽管那里没有插座。我希望 UITableViewCell 成为它自己的 Nib 的原因是我想稍后将它重新用于其他 UIViewController 视图。
我可以很好地查看 UITableViewCell,但我无法让它正常运行。如何将我的 UITableViewCell 中按钮的操作链接到包含其 UITableView 委托和数据源的文件,而不是链接到包含它的 UIViewController?
希望这更清楚一点:-D
【问题讨论】:
-
不完全清楚你的问题是什么。你不能让 UITableViewCell 使用自定义单元格吗?或者你可以但行动不起作用?或者您可以但操作不起作用并且单元格不更新?或者它确实有效,但当您有两个实例时无效?或者表格不使用自定义单元格,因此操作不起作用,单元格不更新并且添加另一个表格实例没有帮助。一次解决一件事。当您让自定义单元格工作时,使用笔尖中的单元格应该相对容易。然后处理行动链。
-
那么你的问题是什么?你试过什么?什么有效?什么没有?
-
所以,现在,层次结构看起来像这样:UIViewController->UIView->UITableView->UITableVIewCell。我将 UITableViewCell 的文件所有者设为 UIViewController,但是当我按下自定义单元格上的按钮时,会调用 UIView 来执行操作 - 而不是 UIViewController。我认为发生这种情况的一个原因是因为我必须将 UITableCellView 上的插座链接到 UITableView 的父 UIView 才能编辑任何属性。如果我摆脱了这个插座,而是把它放在 UIViewController 中,UIView 找不到我的 UITableViewCell
-
为什么UIView首先需要看到UITableViewCell?唯一应该负责查看它的是 UITableViewDataSource,并且可能是按钮自定义操作的任何目标。
-
那么问题就出在你为按钮事件设置的目标不正确。
标签: iphone objective-c cocoa-touch interface-builder