У меня есть универсальный класс контроллера представления, который наследует все классы контроллера представления в моем приложении, у которого есть следующий loadView
метод:
- (void) loadView
{
if (viewType == UIStandardViewControllerViewTypeUIView)
{
UIView *view = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];
[self setView: view];
[view release];
}
else if (viewType == UIStandardViewControllerViewTypeUIScrollView)
{
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];
[self setView: scrollView];
[scrollView release];
}
else if (viewType == UIStandardViewControllerViewTypeUITableViewPlain || viewType == UIStandardViewControllerViewTypeUITableViewGrouped)
{
UITableViewStyle tableViewStyle;
if (viewType == UIStandardViewControllerViewTypeUITableViewPlain)
{
tableViewStyle = UITableViewStylePlain;
}
else
{
tableViewStyle = UITableViewStyleGrouped;
}
UITableView *tableView = [[UITableView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame] style: tableViewStyle];
[self setView: tableView];
[tableView release];
}
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
[[self navigationItem] setBackBarButtonItem: backButton];
[backButton release];
}
Я сделал это таким образом для многихпричины, по которым мне не хочетсяВ любом случае, как вы заметите, один из типов представлений, которые нужно реализовать, это tableview
.Как мы все знаем, tableview
нужны delegate
и datasource
.Мне было интересно, возможно ли реализовать <UITableViewDelegate, UITableViewDataSource>
во время выполнения, когда я знаю, что выбор таблицы - это выбор, который был сделан?
Если нет, у кого-нибудь еще есть идеи, как я могу сделать это без необходимостивручную реализовать мой делегат и источник данных в унаследованном классе контроллера представления?Если я реализую источник данных и делегирую его во время компиляции (обычно) в моем классе UIStandardViewController
, я получаю предупреждение, потому что мне нужно реализовать обязательный источник данных и делегировать методы в моем стандартном классе контроллера представления.Вы бы реализовали их, а затем просто переопределили их в дочернем классе?Или у кого-нибудь есть представление о том, как я могу сделать это чисто?
ОБНОВЛЕНИЕ: Было бы интересно, если бы я просто реализовал делегат и источник данных в своем классе UIStandardViewController, а также реализовал пустые версии необходимых методов, будет либудет много лишних затрат, когда я не использую таблицу?