同一个视图控制器中的两个 UINavigationController
Posted
技术标签:
【中文标题】同一个视图控制器中的两个 UINavigationController【英文标题】:two UINavigationControllers in same viewcontroller 【发布时间】:2012-03-27 05:52:27 【问题描述】:我在使用 iPad 上的 UINavigationalControllers
时遇到了一些问题。
问题:
UINavigationController1
UINavigationController2
放置在UIViewController
。
当事件发生在UINavigationController1
....时应该在UINavigationController2
采取行动
类似这样.....当点击发生在UINavigationController1
中的UITableViewCell
时,视图之间的转换应该在UINavigationController2
中完成
需要一些建议如何处理这个......
提前致谢
【问题讨论】:
您也可以使用委托。为视图控制器创建自定义委托并处理操作。希望对您有所帮助。 【参考方案1】:您应该使用委托来执行此操作
在 @implementation 上方的 ViewController1 的 .h 中添加这个
@protocol ViewController1Delegate;
然后在@end下面
@protocol ViewController1Delegate <NSObject>
- (void)viewController1:(id)controller didDoAction;
@end
然后在控制器中声明一个 ViewController1Delegate 类型的属性
@property (nonatomic, assign) id <ViewController1Delegate> delegate;
然后将此添加到 ViewController1 的 .m 中
@synthesize delegate;
在动作上调用委托方法
if ([self.delegate respondsToSelector:@selector(viewController1:didDoAction)])
[self.delegate performSelector:@selector(viewController1:didDoAction) withObject:self];
现在在 ViewController2 .h 导入 ViewController1.h
#import ViewController1.h
现在在 ViewController2 .h 上像这样监听委托
@interface ViewController2 : UIViewController <ViewController1Delegate>
然后在.m中实现方法
- (void)viewController1:controller didDoAction
//implement
当视图控制器被实例化时,需要像这样将 viewController1 的委托设置为 viewController2
viewController1 = [ViewController1 new];
viewController2 = [ViewController2 new];
viewController1.delegate = viewController2
【讨论】:
以上是关于同一个视图控制器中的两个 UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章
如何仅为一个视图控制器设置 UINavigation 栏的 titletextattributes?