Я уверен, что ответ на этот вопрос смущающий базовый, но у меня возникают проблемы с пониманием того, как компиляция / проверка ошибок в реальном времени в XCode должна работать с динамической природой Objective-C.
Например, я хочу установить setEditing: YES для tableView того, что topViewController находится в моем стеке контроллеров представления. Поэтому я пытаюсь это:
[self.navigationController.topViewController.tableView setEditing: YES animated: YES];
И XCode жалуется: Property 'tableView' not found on object of type 'UIViewController'
.
Теперь этот код находится в UIViewController, но он будет вызываться только тогда, когда topViewController является UITableViewController, но, очевидно, Xcode этого не знает.
Как мне это исправить? Это свидетельствует о плохой практике кодирования с моей стороны? Я попытался обернуть строку в условное выражение, чтобы проверить это topViewController.tableView! = Nil, но тогда XCode просто суетится об условной строке:)
РЕДАКТИРОВАТЬ: Благодаря ответам saadnib и Caleb ниже, это то, что у меня сейчас:
if ([self.navigationController.topViewController isKindOfClass:([UITableViewController class])] ) {
UITableViewController *topController = (UITableViewController *)self.navigationController.topViewController;
[topController.tableView setEditing: YES animated: YES];
}