Я новичок в программировании на iOS, и я использую ECSlidingViewController для создания слайд-меню (например, Facebook). Итак, представьте, если у меня есть два представления, упомянутые в моем меню.Как получить уже созданный UIViewController?
Когда я открою приложение, он, очевидно, вызовет viewDidLoad
для моего вида сверху (первый в моем меню). Если я открою меню и выберем второй вид, он также вызовет viewDidLoad
. Однако, если я вернусь к первому виду, он снова вызовет этот метод, чего я не хочу. У меня есть некоторый код установки, и я не хочу, если возможно, обновлять представления. Я видел Facebook, и они не восстанавливают представления, потому что он помнит мою прокручивающуюся позицию на моей Стене, например, когда я переключил взгляды и вернулся.
Это мой метод делегата, который вызывает при выборе:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Get identifier from selected
NSString *identifier = [NSString stringWithFormat:@"%@", [self.menu objectAtIndex:indexPath.row]];
// Add the selected view to the top view
UIViewController *newTopVC = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
// Present it
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
CGRect frame = self.slidingViewController.topViewController.view.frame;
self.slidingViewController.topViewController = newTopVC;
self.slidingViewController.topViewController.view.frame = frame;
[self.slidingViewController resetTopView];
}];
}
Есть ли способ, чтобы каким-то образом получить определенную VC, если он уже создан? Таким образом, он будет звонить только viewWillAppear
, а не viewDidLoad
не один раз.
спасибо.
Да, создайте для него сильное свойство, когда вы его сначала создадите, а затем используйте это свойство, а не создавайте новый, в следующий раз, когда оно вам понадобится. – rdelmar
@rdelmar Итак, это будет массив 'UIViewController', потому что у меня несколько видов? – swiftcode