Iphone 如何引用superview';导航控制器
我有一个可重用的UITableViewController子类,称之为“tableVC”。选择表格行会将该详图视图控制器推送到导航堆栈上。tableVC实例只有在其自身被推送时才具有有效的navController。到目前为止还不错 我需要将tableVC的视图嵌入到另一个视图中,该视图的viewController已被推送。由于superview的viewController已被推送,因此它具有有效的navCon。我无法从tableVC中获取导航控制,因为tableVC尚未被推送,因此完全可重用的tableVC无法推送细节。 除了在一个特殊的UINavigationController变量中进行黑客攻击外,是否有一种干净的方法引用该navCon,如果self.navigationController为nil,则访问该黑客攻击?这似乎是一种非常普遍的情况,应该有一个最佳实践。 非常感谢您的任何见解。Iphone 如何引用superview';导航控制器,iphone,uinavigationcontroller,subview,Iphone,Uinavigationcontroller,Subview,我有一个可重用的UITableViewController子类,称之为“tableVC”。选择表格行会将该详图视图控制器推送到导航堆栈上。tableVC实例只有在其自身被推送时才具有有效的navController。到目前为止还不错 我需要将tableVC的视图嵌入到另一个视图中,该视图的viewController已被推送。由于superview的viewController已被推送,因此它具有有效的navCon。我无法从tableVC中获取导航控制,因为tableVC尚未被推送,因此完全可重
-Mike在UIViewController中嵌入UITableViewController是什么意思?我可以看到UITableView如何嵌入到UIView中(我有这样做的代码)。但是嵌入视图控制器 当我在UIView中有一个UITableView时,我将UIViewController子类化,并让它实现UITableViewDelegate和UITableViewDataSource,如下所示:
@interface MyViewController : UIViewController
< UITableViewDelegate, UITableViewDataSource >
//...
@end
@接口MyViewController:UIViewController
//...
@结束
这允许一个IUViewController同时工作。这会在某种程度上损害您的独立UITableViewController。但是,您可以创建某种委托类来实现UITableViewDelegate和UITableViewDataSource,并将该委托类的实例(作为ivar)引用到UIViewController
只是一个想法…在UIViewController中嵌入UITableViewController是什么意思?我可以看到UITableView如何嵌入到UIView中(我有这样做的代码)。但是嵌入视图控制器 当我在UIView中有一个UITableView时,我将UIViewController子类化,并让它实现UITableViewDelegate和UITableViewDataSource,如下所示:
@interface MyViewController : UIViewController
< UITableViewDelegate, UITableViewDataSource >
//...
@end
@接口MyViewController:UIViewController
//...
@结束
这允许一个IUViewController同时工作。这会在某种程度上损害您的独立UITableViewController。但是,您可以创建某种委托类来实现UITableViewDelegate和UITableViewDataSource,并将该委托类的实例(作为ivar)引用到UIViewController
只是一个想法…简单的答案是否定的,没有其他方法可以到达您要的导航控制器 中等答案是,您可以覆盖表视图控制器的navigationController属性以使其可写:
@interface myTableViewController : UITableViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;
这将允许您在将其视图添加为子视图时将其设置为推送VC的导航控制器。当您正常地将它推到导航控制器堆栈上时,它也会像承诺的那样工作
答案很长是苹果不鼓励你这么做。从中:
注意:如果要将单个
筛选到多个区域并管理
每一个单独,使用泛型
控制器对象(自定义对象)
从NSObject(对象)下降,而不是
查看控制器对象以管理每个
屏幕的子部分。然后使用
单个视图控制器对象到
管理通用控制器对象。
视图控制器协调视图
整体屏幕交互,但
根据需要将消息转发给
它管理的通用控制器对象
我遇到了您正在描述的问题,最后首先采取了一种方法:创建一个单独的控制器类,该类继承自NSObject(而不是UIViewController),并实现UITableViewDelegate和UITableViewDataSource来管理表视图。如果你决定走这条路的话,他的帖子中有非常有用的示例代码。当我这么做的时候,很大程度上相当于简单地更改了自定义UITableViewController子类中的继承声明。简短的回答是否定的,没有其他方法可以获得您所追求的导航控制器 中等答案是,您可以覆盖表视图控制器的navigationController属性以使其可写:
@interface myTableViewController : UITableViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;
这将允许您在将其视图添加为子视图时将其设置为推送VC的导航控制器。当您正常地将它推到导航控制器堆栈上时,它也会像承诺的那样工作
答案很长是苹果不鼓励你这么做。从中:
注意:如果要将单个
筛选到多个区域并管理
每一个单独,使用泛型
控制器对象(自定义对象)
从NSObject(对象)下降,而不是
查看控制器对象以管理每个
屏幕的子部分。然后使用
单个视图控制器对象到
管理通用控制器对象。
视图控制器协调视图
整体屏幕交互,但
根据需要将消息转发给
它管理的通用控制器对象
我遇到了您正在描述的问题,最后首先采取了一种方法:创建一个单独的控制器类,该类继承自NSObject(而不是UIViewController),并实现UITableViewDelegate和UITableViewDataSource来管理表视图。如果你决定走这条路的话,他的帖子中有非常有用的示例代码。当我这样做的时候,它在很大程度上相当于简单地更改了自定义UITableViewController子类中的继承声明。我没有嵌入UITableView控制器,而是嵌入了它的视图。我没有嵌入UITableView控制器,而是嵌入了它的视图。Matt的代码解决了一个稍微不同的问题