Я в некотором роде здесь. Создание игры для iOS, которая содержит, скажем, два представления: BaseView и MapView.Теперь у них, конечно, один и тот же appDelegate.
Оба используют подкласс UIView с именем rivbox .В более ранних сборках я выделял экземпляр rivbox как в базовом представлении, так и в представлении карты.Когда я понял, что у меня будет много подпредставлений, использующих этот rivbox, я вместо этого решил выделить только ОДИН экземпляр rivbox в appDelegate, а затем, когда подпредставление загружено, получает возможность «одолжить» rivboxиз appDelegate с помощью этих изящных функций.
-(void)viewDidLoad {
//Get all the sweets from the parent!
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
rivbox = appDelegate.rivbox;
[self.view addSubview:rivbox];
...
}
И эта функция предназначена для обновления владельца, если мы снова вернемся к этому представлению
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(rivbox != nil) {
[rivbox setDelegate:self];
[self.view addSubview:rivbox];
}
}
Это прекрасно работает!Я нахожу rivbox в appDelegate, и он обновляется!Когда я перехожу на другой вид, он загружается там тоже просто отлично!Но когда я возвращаюсь к первому виду, это, кажется, протекает?!?!Я не вижу rivbox в моем предыдущем представлении, когда возвращаюсь к нему, хотя предыдущему представлению теперь принадлежит его!
Проблема: что с этим не так?Действительно ли мне нужно добавлять rivbox в качестве подпредставления каждый раз, когда я возвращаюсь к просмотру, которое уже было загружено?Если я удалю эту строку, то не смогу увидеть MyBox, когда вернусь к предыдущему виду.