简单的代理方法不叫
问题描述:
我已经搜索了类似的问题,但我不明白为什么这不起作用。我现在做了一些教程和教程项目的工作,但我做的一切都是一样的,没有结果。简单的代理方法不叫
我有我的InboxViewController与表视图与文章列表。我有另一个视图(AccordionViewController.h),我可以选择按日期或评分排序。
这是第二控制器:AccordionViewController.h
@protocol OptionSelectionDelegate <NSObject>
-(void)selectedFilter:(NSMutableArray *)articles;
@end
@interface AccordionTableViewController : UITableViewController {
NSArray *topItems;
NSMutableArray *subItems; // array of arrays
NSInteger currentExpandedIndex;
}
@property (nonatomic, strong) NSMutableArray* articles;
@property (nonatomic, weak) id<OptionSelectionDelegate> delegate;
@end
在InboxViewController.m
我做:
@interface InboxViewController() <UITableViewDelegate, UITableViewDataSource, UINavigationControllerDelegate, OptionSelectionDelegate>
. . .
#pragma mark - State Selection Delegate
-(void)selectedFilter:(NSMutableArray *)articles1
{
self.articles = articles1;
for (int i=0; i<self.articles.count; i++) {
Article* a = [self.articles objectAtIndex:i];
NSLog(@"Inbox Sorted Array 1: %d - %@",i, a.date);
}
[self.tableView reloadData];
}
我称之为AccordionVC此方法在didSelectRowAtIndexPath方法是这样的:
. . .
self.articles = [sortedArticles mutableCopy];
[self.delegate selectedFilter:self.articles];
. . .
谢谢。将添加任何需要的东西
答
在AccordionVC,你缺少的行:
self.delegate = .. //some reference to a InboxViewController
+0
谢谢你的答案。我将它设置在InboxViewController的prepareForSegue中,它立即工作。 – sermilion
你在哪里设置委托? – Cutetare
你在哪里设置self.delegate? //编辑:Cutetare在我之前说的9秒! :) – mc01