получение контейнера / UIViewController из UIView - PullRequest
0 голосов
/ 15 марта 2012

Итак, у меня есть UIViewController A, который добавляет UIView B в качестве подкласса.UIView B имеет UITableView.Я хочу, чтобы делегат UITableView scrollView находился в UIViewController A. Как мне это сделать?На данный момент делегат scrollViewDidScroll находится внутри этого класса UIView.Есть ли способ, чтобы scrollViewDidScroll находился внутри viewController A и вызывался всякий раз, когда прокручивается UITableView в UIView?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Сделать tableView как свойство доступным извне. Чем вы можете настроить его в вашем ViewController A следующим образом:

// ClassB.h
@property (nonatomic, readonly) UITableView* tableView;


// In your UIViewControllerA.m
// in loadView: or anywhere else
self.viewB.tableView.delegate = self;

Итак, результат: ваш ViewController является делегатом.

0 голосов
/ 15 марта 2012

Представление прокрутки и представление таблицы - это один и тот же объект - обратите внимание, что UITableView является подклассом UIScrollView.У этого объекта есть только один делегат, а не отдельные делегаты для элементов таблицы и элементов прокрутки.Также обратите внимание, что UITableViewDelegate принимает UIScrollViewDelegate.Таким образом, объект, который вы задали в качестве делегата таблицы, также получит сообщения UIScrollViewDelegate.

Теперь нет никаких причин, по которым делегат вашей таблицы не может пересылать сообщения о прокрутке на какой-либо другой объект.Конечно, вы должны сами это настроить.Таким образом, когда B получает сообщение -scrollViewDidScroll:, оно может отправить эквивалентное сообщение A или что-то еще.Я бы дважды подумал, прежде чем делать это, хотя ... Я бы постарался, чтобы за все, что связано с таблицей, отвечал только один объект (контроллер представления).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...