У меня есть класс, который подклассы UITableViewController
. На основании действий пользователя, которые распознаются в этом классе, мне нужно вызвать метод в таблице в UIViewController
, если была создана эта таблица. Я не могу понять, как это сделать.Метод вызова в другом классе
Я попытался сделать функцию статической, но это не сработает, так как есть переменная экземпляра, которую мне нужно достичь. Возможно, я мог бы использовать NSNotificationCenter
, но моя интуиция заключается в том, что есть лучший способ. Может кто-нибудь помочь? Благодаря!
MonthsTableViewController.h
@interface MonthsTableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
{
NSArray *monthsArray;
}
@end
MonthsTableViewController.m
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"calling the UIViewController");
//this is where I am stuck!!!
}
SubscribeViewController.h
@interface SubscribeViewController : UIViewController <SIMChargeCardViewControllerDelegate>
{
MonthsTableViewController *monthsController;
IBOutlet UITableView *monthsTable;
}
- (void) snapMonthsToCenter;
@end
SubscribeViewController.m
- (void) snapMonthsToCenter {
// snap the table selections to the center of the row
NSLog(@"method called!");
NSIndexPath *pathForMonthCenterCell = [monthsTable indexPathForRowAtPoint:CGPointMake(CGRectGetMidX(monthsTable.bounds), CGRectGetMidY(monthsTable.bounds))];
[monthsTable scrollToRowAtIndexPath:pathForMonthCenterCell atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
Отправить уведомление или определить протокол и делегат в 'MonthsTableViewController'. Затем «MonthsTableViewController» может сказать своему делегату, что что-то произошло. «SubscriberViewController» может быть делегатом. Когда вызывается метод делегата, 'SubscribeViewController' может вызывать собственный' snapMonthsToCenter' или что-то еще, что ему нужно сделать. – rmaddy