Может быть, я пытаюсь подойти к этому неправильно ...
В моем контроллере основного вида у меня есть три кнопки.
Каждая кнопка вызывает загрузку другого UIViewController и его пера.
Я использую один метод для работы с касаниями кнопок:
-(IBAction)touched_menu_button:(id)sender
{
SEL selector;
UIButton *button = (UIButton *)sender;
switch (button.tag)
{
case 0:
selector = @selector(ShowA:finished:context:);
break;
case 1:
selector = @selector(ShowB:finished:context:);
break;
case 2:
selector = @selector(ShowC:finished:context:);
break;
default:
selector = @selector(ShowA:finished:context:);
break;
}
[self FadeOut:selector];
}
Что здесь происходит, так это то, что я запускаю небольшую анимацию, прежде чем на самом деле появится новый вид. Я вызываю «FadeOut» с помощью селектора, который вызовет метод, который покажет соответствующий вид после завершения анимации. Это отлично работает. Процедуры, вызываемые селекторами, выглядят так:
-(void)ShowA:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
A_ViewController *mvc = [[[A_ViewController alloc] init] autorelease];
mvc.delegate = self;
[self presentModalViewController:mvc animated:FALSE];
}
Это тоже отлично работает.
Что я хотел бы сделать, так это свести это к одному методу, вызываемому селектором, и поместить весь избыточный код в мой метод "touched_menu_button". Тогда функция обратного вызова будет выглядеть так:
-(void)ShowNewView:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
[self presentModalViewController:mvc animated:FALSE];
}
Очевидно, это требует передачи другого подкласса UIViewController в "mvc" в зависимости от того, какое представление я хочу показать. И вот тут я столкнулся с неприятностями. Может быть, это то, что я программирую 12 часов подряд, и я мысленно жарен, но я не могу понять, как это сделать. Я попытался определить переменные класса как void , void *, id, UIViewController * и UIViewController **. По какой-то причине я не могу заставить его работать.
Я должен отметить, что ряд подходов работает, однако они сталкиваются с проблемами, когда представление отклоняется и происходит процесс автоматического выпуска. Кажется, что мне не удается передать адрес указателя на подкласс UITableView во всех перестановках, которые я пробовал. Единственный вариант, который я могу определить прямо сейчас, действительно ужасен.