2013-08-03 6 views
0

В моем приложении есть два контроллера вида, например, vc1 и vc2. Два контроллера представлений - это как подвид прокрутки, поэтому пользователь может прокручивать экран для переключения вида. Однако простой инструмент имеет проблему: метод viewWillAppear vc1 и vc2 вызывается только один раз. поэтому я хочу реализовать свой контроллер просмотра контейнера прокрутки, который может вызвать метод viewWillAppear правильно, пожалуйста, скажите мне, как его реализовать.Как сделать пользовательский контроллер просмотра прокрутки?

ответ

1

Я не уверен, что вы пытаетесь сделать, но я думаю, что просто UITableView или UICollectionView может быть лучше вы, потому что у них есть метод источника данных, который будет автоматически вызываться, когда представление появится на экране. Вы можете обновить два представления, когда вам нужно вернуть UITableViewCell или UICollectionViewCell.

0

Я не уверен, что это сработает, но я думаю, вы можете проверить, соответствуют ли рамки vc1 и vc2 границам экрана в методе делегирования scrollView.

Я уверен, что каждый раз, когда прокручивается scrollView, вызывается метод. В этом методе, вы можете проверить

//put this in your .h or something 
BOOL vc1IsVisible = true; 

//in the scrollView delegate-method that is called upon scrolling 
if([self isInsideView:vc1]) 
{ 
    if(!vc1IsVisible) 
    { 
     vc1IsVisible = true; 
     [vc1 viewDidAppear:NO]; //or whatever it is for animation 
    } 
} 
else 
{ 
    if(vc1IsVisible) 
     vc1IsVisible = false 
     //and viewDidDisappear? 
} 

, а затем создать метод где-то, как это

-(BOOL)isInsideView:(UIViewController*)vc 
{ 
    //Check if vc.origin.y is greater than scrollView.size.height or something maybe? 
    //You can probably also try using the scrollView's contentOffset and use that 
    //relative to the viewController's sizes. 
    //if the viewControllers bounds are withing the scrolls bounds, return YES; 
    //else, return NO; 
} 

К сожалению, я не могу проверить что-нибудь прямо сейчас. Может быть, я что-то сделаю и позже обновлю ответ, если вы этого не поняли. И вам нужно сделать это с обоими. Я уверен, что вы можете найти лучший способ включить как один метод с этим, так и даже с одной переменной.

0

Поскольку вы используете ViewController, добавив его подвид из Scrollview, добавив ViewController таким образом viewDidLoad, viewWillAppear, viewDidAppear будет вызываться только один раз, я имею в виду нет использования viewWillAppear здесь как таковые, а если вы хотите обновить ничего в добавленном ViewController вы должны создать общественный класс в ViewController и назвать его, когда вам нужно обновление ..

Смежные вопросы