如何根据选定的 UITableViewCell 将变量传递给 UINavigationController 的 childController
想象一个简单的基于导航的 iPhone 应用程序。 顶层是一个 tableView,其中的单元格显示为“PDF1”、“PDF2”、“PDF3”以及公开指示符。我们将顶层控制器称为“RootController”。
当您推送标记为“PDF1”的单元格时,名为“PDFViewerController”的子控制器类将被推送到堆栈上,该堆栈会构建一个新屏幕并在其 UIWebView 中加载“PDF1”。
现在想象我们回到 tableView 并推送 tableCell“PDF2”。这次,相同的“PDFViewerController”被推入堆栈,但现在它知道加载“PDF2”。
我现在的做法是,我必须为 PDF1、PDF2 和 PDF3 编写控制器类,创造性地命名为“PDFViewerController1”、“PDFViewerController2”、“PDFViewerController3”。 问题是这些类中唯一的区别是 NSURL,并且能够根据 tableCell 选择传入正确的 NSURL 的冗余代码要少得多。
我觉得我在这里错过了一些关于 OOP 的基本知识。如果有人能指出我正确的方向,那就太好了。我什至不确定要谷歌什么样的字符串来解决这个问题。如果有人可以为此线程建议一个更好的标题,这也可能对其他人有所帮助。
谢谢。
Imagine a simple Navigation based iPhone app.
The top level is a tableView with cells that read "PDF1" "PDF2" "PDF3" with disclosure indicators. Let's call the top level controller "RootController."
When you push the cell labelled "PDF1" a child controller class called "PDFViewerController" is pushed onto the stack which builds a new screen and loads "PDF1" in it's UIWebView.
Now imagine we go back to the tableView and push the tableCell "PDF2." This time the same "PDFViewerController" is pushed onto the stack but now it knows to load "PDF2".
The way I'm doing it now I have to write controller classes for PDF1, PDF2 and PDF3 creatively named "PDFViewerController1","PDFViewerController2","PDFViewerController3".
The thing is the only difference in these classes is the NSURL and it would be much less redundant code to be able to pass in the right NSURL based on a tableCell selection.
I feel like I'm missing something fundamental about OOP here. It'd be great if someone could point me in the right direction. I'm not even sure what kind of string to google to solve this. If someone can suggest a better title for this thread that might help others too.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用额外参数为 PDF 视图控制器创建一个 init 方法,然后在
didSelectRowAtIndexPath:
方法中:Create an init method for PDF view controller with an extra parameter, then, in the
didSelectRowAtIndexPath:
method: