Не използвате правилно модалните последователности. Начинът, по който сте го внедрили, вие създавате нов екземпляр на всеки контролер на изглед, когато преминавате, вместо да се връщате към екземпляра, от който сте дошли. Ето защо използването на вашата памет продължава да се увеличава.
Преди iOS 6, правилният начин да се справите с това беше да:
1) дефинирайте метод като viewController2Done
в контролер за изглед 1
2) в контролер за изглед 2, създайте свойство, наречено delegate
от тип id
.
3) в prepareToSegue
за контролер за изглед 1, задайте delegate
в контролер за изглед 2 на self
4) в изглед контролер 2, когато е време да се върнете към изглед контролер 1, извикайте [delegate viewController2Done]
5) в viewController2Done
извикайте [self dismissModalViewControllerAnimated:YES]
Този метод все още работи в iOS 6, но има и нов unwind segue
, който може да се използва вместо него. За да го използвате, трябва да дефинирате метод във вашия изглед контролер 1 така:
Цел-C:
- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
NSLog(@"and we are back");
}
Swift:
@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
print("and we are back")
}
След това бихте контролирали плъзгането от бутона в контролера за изглед 2 до оранжевата икона за изход в лентата над контролера за изглед в Storyboard. В изскачащия прозорец ще изберете unwindFromViewController2
и готово.
person
vacawama
schedule
28.10.2012