У меня есть 2 контроллера представления и переход между ними, который я запускаю программно.
В первом контроллере вида хранятся некоторые данные, хранящиеся в self.myCustomProperty
, которые необходимо передать второму контроллеру. Второй контроллер представления с именем класса MyTableViewController
, который наследуется от UITableViewController
, имеет свойство customData
, которое также подразумевает соответствующий метод установки setCustomData:somedata
.
Первый контроллер представления выполняет переход к определенному событию:
[self performSegueWithIdentifier:@"MyCustomSegue" sender:self];
который начинает это:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if( [segue.identifier isEqualToString:@"MyCustomSegue"] ){
MyTableViewController *destinationController = segue.destinationViewController;
[destinationController setCustomData:self.myCustomProperty];
}
}
Проблема в том, что [destinationController setCustomData:self.myCustomProperty]
вызывает:
'NSInvalidArgumentException', причина: '- [UITableViewController setCustomData:]: нераспознанный селектор, отправленный экземпляру 0x ...
После проверки проблемы я заметил, что переменная destinationController
имеет класс UIViewController
class вместо MyTableViewController
. Я предполагаю, что исключение выдается, потому что UIViewController
не имеет свойства customData
.
Некоторое время я искал в Интернете, но я не нашел упоминаний о таких проблемах и не нашел способа превратить UIViewController
в MyTableViewController
. Единственный способ сделать последнее, что я нашел, это object_setClass(id obj, Class cls)
, но его использование может вызвать серьезные проблемы.
Как мне решить проблему?