同一个viewcontroller中的两个UINavigationControllers

时间:2012-03-27 05:52:27

标签: iphone ios ipad uiviewcontroller uinavigationcontroller

我在iPad上使用UINavigationalControllers时遇到了一些问题。

问题:

UINavigationController1 UINavigationController2

放在UIViewController

当事件发生在UINavigationController1 ....时,行动应该在UINavigationController2

中进行

这样的事情.....当UITableViewCell中的UINavigationController1点击发生时,视图之间的转换应该在UINavigationController2

中完成

需要一些建议如何处理...

提前致谢

1 个答案:

答案 0 :(得分:0)

您应该使用委托来执行此操作

在@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