2014-07-07 38 views
0

我已经搜索了类似的问题,但我不明白为什么这不起作用。我现在做了一些教程和教程项目的工作,但我做的一切都是一样的,没有结果。简单的代理方法不叫

我有我的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]; 
. . . 

谢谢。将添加任何需要的东西

+0

你在哪里设置委托? – Cutetare

+0

你在哪里设置self.delegate? //编辑:Cutetare在我之前说的9秒! :) – mc01

回答

0

在AccordionVC,你缺少的行:

self.delegate = .. //some reference to a InboxViewController 
+0

谢谢你的答案。我将它设置在InboxViewController的prepareForSegue中,它立即工作。 – sermilion