Как перезагрузить мой UIViewController по нажатию некоторых кнопок? - PullRequest
7 голосов
/ 11 октября 2011

Я занимаюсь разработкой приложения для iPhone, у меня есть класс UIViewController, в котором есть некоторые анимации прикрытия, и в соответствии с дизайном у меня есть около 5 кнопок в верхней части моего вида, каждая кнопка имеет метод IBAction при нажатии кнопки Мне нужно отобразить другой набор Coverflow с другими данными, и счет Coverflow также меняется от одного действия кнопки к другому. Моя проблема в том, как я могу обновить свою страницу (перезагрузить) нажатием этих кнопок, поскольку я знаю, что явный вызов viewDidLoad - очень плохая идея, так как я могу это сделать? Любая помощь оценивается заранее спасибо.

Ответы [ 6 ]

6 голосов
/ 11 октября 2011

Самый простой способ получить представление для перерисовки - это вызвать [UIView setNeedsDisplay] или использовать [UIView setNeedsDisplayInRect]. Этот метод сообщает представлению, что ему нужно перерисовать себя и свои подпредставления. Однако не всегда нужно это называть. Есть другие методы, которые могут заставить представления перерисовывать себя. Например, если вы добавляете или удаляете представление в иерархию представлений, используя [UIView addSubview:] или [UIView removeFromSuperview].

Эти методы заставляют систему вызывать метод drawInRect: вашего представления (при условии, что вы переопределите его с помощью пользовательского кода рисования). Если вы не изменили этот метод для пользовательского рисования, это должно привести к тому, что ваши подпредставления получат одно и то же сообщение, чтобы у них была возможность перерисовать.

Дополнительная информация здесь. В частности, прочитайте раздел «Цикл рисования вида».

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

3 голосов
/ 11 октября 2011

Почему вы хотите перезагрузить страницу ?, если это происходит потому, что вы меняете свое представление и хотите, чтобы оно было перерисовано, вы можете позвонить:

setNeedsDisplay();

Но это часто не нужно, так как всякий раз, когда изменяются границы представлений, которые вызываются автоматически для вас.

1 голос
/ 04 июля 2015

Если вы хотите обновить «UIViewController», то:

[self viewDidLoad];

Источник: Как программно обновить UIViewController?

1 голос
/ 25 октября 2012

Если есть слишком много других вещей, вместо того, чтобы обновлять / перезагружать часть вашего интереса в вашем методе viewDidLoad, вы можете извлечь обновленную часть в частный метод, скажем methodA. Каждый раз, когда вы нажимаете свою кнопку, вы вызываете этот метод. Однако я думаю, что methodA все еще нужно вызвать setNeedsDisplay или перерисовать ту часть, которая вас интересует. Надеюсь, это поможет.

0 голосов
/ 02 декабря 2016
To Refresh your UIViewController, When Clicking the button >>

Add the below code into your UIButton method,

-(IBAction)button:(id)sender{
    [self viewDidLoad];
    [self viewWillAppear:YES];
}

Now Build and Run Your Code. 
0 голосов
/ 11 октября 2011

Используйте функцию viewWillAppear (). Эта функция вызывается каждый раз, когда вызывается представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...