touchesBegan时推视图

时间:2010-08-03 16:47:54

标签: iphone objective-c

我有一个带导航控制器的应用程序,当用户在特定视图中时,他可以触摸scollview,我想要推送rootViewController。所以,我有子类uiscrollview,在方法“touchesBegan”中,我想推送rootviewcontroller,但我没有访问导航控制器!我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

UIViewControllers有一个属性“navigationController”,所以你只需要访问被触摸视图的视图控制器。

然而,我发现在iphone开发中,跳过这样的箍是发展中的弱点的迹象。例如,为什么视图会告诉视图CONTROLLER执行某些操作。它应该是相反的方式。话虽这么说,UIViewController是UIResponder的子类,所以你可以处理控制器中的触摸。然后你可以简单地说。

[myViewController.navigationController pushViewController:animated:]

答案 1 :(得分:0)

在UIScrollView的子类中创建两个实例变量:

id delegate;
SEL touchAction;

然后创建方法:

-(void)setTarget:(id)target andAction:(SEL)action {
    delegate = target;
    touchAction = action;
}
-(void)callAction {
    if (delegate && [delegate respondsToSelector:touchAction]) {
        [delegate performSelector:touchAction];
    }
}

在你的touchesBegan中只需调用此方法:

...
[self callAction];
...

在你的UIViewController类中创建方法:

-(void)myScrollViewTouchAction {
    [self.navigationController pushViewController:myNewViewController animated:YES];
}

最后在创建UIScrollView子类的实例时,将其设置为target和action:

[myScrollView setTarget:self andAction:@selector(myScrollViewTouchAction)];