从视图中调用视图控制器中的方法

时间:2010-03-31 17:09:48

标签: iphone objective-c uiview uiviewcontroller

我必须调用视图控制器中存在的方法,该方法的引用在视图中可用。当我尝试像任何其他方法一样调用该方法时,由于某种原因,iPhone只是忽略了这个调用。有人可以解释为什么会发生这种情况,我还可以如何调用这种方法?


在视图中我有这个方法:

-(void) touchesBegan :(NSSet *) touches withEvent:(UIEvent *)event{
NSArray* mySubViews = [self subviews];
for (UITouch *touch in touches) {
    int i = 0;
    for(; i<[mySubViews count]; i++){
        if(CGRectContainsPoint([[mySubViews objectAtIndex:i] frame], [touch locationInView:self])){
            break;
        }
    }
    if(i<[mySubViews count]){
                    // viewController is the reference to the View Controller. 
        [viewController pointToSummary:[touch locationInView:self].y];
        NSLog(@"Helloooooo");
        break;
    }
}

}

每当触发touches事件时,Hellooooo会在控制台中打印,但之前的方法会被忽略

3 个答案:

答案 0 :(得分:0)

在视图中我有这个方法:

-(void) touchesBegan :(NSSet *) touches withEvent:(UIEvent *)event{
NSArray* mySubViews = [self subviews];
for (UITouch *touch in touches) {
    int i = 0;
    for(; i<[mySubViews count]; i++){
        if(CGRectContainsPoint([[mySubViews objectAtIndex:i] frame], [touch locationInView:self])){
            break;
        }
    }
    if(i<[mySubViews count]){
                    // viewController is the reference to the View Controller. 
        [viewController pointToSummary:[touch locationInView:self].y];
        NSLog(@"Helloooooo");
        break;
    }
}

}

每当触发touches事件时,Hellooooo会在控制台中打印,但之前的方法会被忽略

答案 1 :(得分:0)

我为视图创建了一个视图控制器,并允许视图控制器之间进行通信。也许这是MVC协议的一部分。

答案 2 :(得分:0)

检查viewController的值,以确保它不是nil,使用调试器或添加NSLog:

[viewController pointToSummary:[touch locationInView:self].y];
NSLog(@"viewController=%@", viewController);
NSLog(@"Helloooooo");