代码之家  ›  专栏  ›  技术社区  ›  Rayfleck

如何引用superview的导航控制器

  •  1
  • Rayfleck  · 技术社区  · 15 年前

    我需要将tableVC的视图嵌入另一个视图中,该视图的viewController已被按下。由于该superview的viewController已被按下,因此它具有有效的navCon。我无法从tableVC获取navCon,因为tableVC没有被推送,所以完全可重用的tableVC无法推送细节。 除了在一个特殊的UINavigationController变量中进行黑客攻击之外,是否有一种干净的方法来引用navCon,如果self.navigationController为nil,则访问黑客?似乎是一个很普遍的情况,应该有一个最佳做法。 任何见解都是非常感谢的。 -迈克

    2 回复  |  直到 15 年前
        1
  •  4
  •   Tim Isganitis    15 年前

    简短的回答 AFAIK是不,没有其他方法可以到达你正在追求的导航控制器。

    中等答案 您可以重写表视图控制器的navigationController属性以使其可写:

    @interface myTableViewController : UITableViewController {
      UINavigationController *navigationController;
    }
    @property (nonatomic, retain) UINavigationController *navigationController;
    

    长话短说 是苹果不鼓励你做的事。从 "About Custom View Controllers" View Controller Programming Guide :

    注意:如果你想分开一个 每一个单独使用 控制器对象(自定义对象 查看要管理的控制器对象 单一视图控制器对象 视图控制器协调 根据需要将消息转发到 它管理的通用控制器对象。

    我遇到了你所描述的问题,结果我先采取了一种方法 suggested by Matt Gallagher on Cocoa with Love

        2
  •  0
  •   westsider    15 年前

    在UIViewController中嵌入UITableViewController是什么意思?我可以看到UITableView如何嵌入到UIView中(我有这样做的代码)。但是嵌入视图控制器。。。

    当在UIView中有UITableView时,我将UIViewController子类化,并让它实现uitableviewdelect和UITableViewDataSource,如下所示:

    @interface MyViewController : UIViewController
            < UITableViewDelegate, UITableViewDataSource >
    //...    
    @end
    

    这允许一个IUViewController执行双重任务。这会在一定程度上损害您自包含的UITableViewController。但是,您可以创建某种委托类,该类实现UITableViewDelegate和UITableViewDataSource,并将其实例(作为ivar)引用到UIViewController。

    只是个主意。。。