2010-08-03 3 views
0

У меня есть приложения с контроллером навигации, когда пользователь находится в определенном виде. Он может коснуться scollview, и я хочу нажать rootViewController. Итак, у меня есть подклассы uiscrollview, и в методе «touchhesBegan» я хочу нажать на rootviewcontroller, но у меня нет доступа к контроллеру навигации! Как я могу это сделать?push view when touchhesBegan

ответ

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 подкласса, установить его цель и действие:

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

Я все эти вещи, но когда эта линию выполнена : [делегировать performSelector: touchAction], метод myScrollViewTouchAction не вызывается, в initwithnibname моего контроллера представления, я создаю экземпляр подкласса uiscrollview и вызываю setTarget .... – alex

+0

Проблема в том, что когда я вызывал setTarget и когда ПрикосновениеBegan называется, i t не один и тот же объект, поэтому делегат не устанавливается, когда вызывается touchhesBegan ... – alex

+0

, затем задайте цель и действие для нового объекта. – jamapag

1

UIViewControllers имеют свойство «navigationController», поэтому вам просто нужно получить доступ к контроллеру вида рассматриваемого вида.

Однако, я обнаружил, что в развитии iphone прыжки через обручи, как это, являются признаком слабости в развитии. Например, для чего нужно, чтобы представление отображало представление CONTROLLER, чтобы что-то сделать. Это должно быть наоборот. При этом UIViewController является подклассом UIResponder, поэтому вы можете обрабатывать штрихи в контроллере. Тогда вы можете просто сказать.

[myViewController.navigationController pushViewController: анимированные:]