【发布时间】:2014-12-15 13:34:05
【问题描述】:
我正在尝试将 Apple 的 TableViewUpdates 示例(扩展 TableView 单元格)适应我自己的应用程序,但我似乎无法让它工作。
我试着缩小问题的范围,我想我现在知道问题出在哪里了。
Apple 使用 UITableViewController 作为视图的基本控制器,但我有一个 UIViewController,它具有 UITableViewDelegate 和 DataSource 作为委托方法。我像这样添加了 HeaderViewDelegate:
@interface SearchViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, IngredientHeaderViewDelegate>
IngredientHeaderFooterView.h:
#import <Foundation/Foundation.h>
#include <UIKit/UIKit.h>
@protocol IngredientHeaderViewDelegate;
@interface IngredientHeaderFooterView : UITableViewHeaderFooterView
@property (nonatomic, weak) IBOutlet UILabel *lblTitle;
@property (nonatomic, weak) IBOutlet id <IngredientHeaderViewDelegate> delegate;
@property (nonatomic) NSInteger section;
- (void)toggleOpenWithUserAction:(BOOL)userAction;
@end
@protocol IngredientHeaderViewDelegate <NSObject>
@property (nonatomic) NSInteger hoi;
@optional
- (void)sectionHeaderView:(IngredientHeaderFooterView *)sectionHeaderView sectionOpened:(NSInteger)section;
- (void)sectionHeaderView:(IngredientHeaderFooterView *)sectionHeaderView sectionClosed:(NSInteger)section;
@end
在 IngredientHeaderFooterView.m 中:
- (void)toggleOpenWithUserAction:(BOOL)userAction {
if ([self.delegate respondsToSelector:@selector(sectionHeaderView:sectionOpened:)]) {
NSLog(@"Test1");
[self.delegate sectionHeaderView:self sectionOpened:self.section];
}
if ([self.delegate respondsToSelector:@selector(sectionHeaderView:sectionClosed:)]) {
NSLog(@"Test2");
[self.delegate sectionHeaderView:self sectionClosed:self.section];
}
}
在我实现委托的 UIViewController 中:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
IngredientHeaderFooterView *ingredientHeaderView = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier];
IngredientDescriptionInfo *ingredientInfo = (self.sectionInfoArray)[section];
ingredientInfo.headerView = ingredientHeaderView;
ingredientHeaderView.lblTitle.text = ingredientInfo.play.name;
ingredientHeaderView.section = section;
ingredientHeaderView.delegate = self;
return ingredientHeaderView;
}
但 respondsToSelector: 总是返回 false。会是什么?
【问题讨论】:
-
您的视图控制器是否实现了这两种方法?仅仅分配代表是不够的……
-
是的,当然。我在上面放了一个断点和 NSLog,但它甚至没有超过它。所以这就是为什么我认为它没有被调用。
标签: ios objective-c iphone uitableview delegates