Функция протокола с типом Self - PullRequest
0 голосов
/ 11 марта 2019

Вот код:

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@protocol HomeHeaderCellDelegate <NSObject>
- (void)didTapMoreLessMenuButton:(HomeHeaderCell *)cell;
@end

@interface HomeHeaderCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UIView *secondMenuRowView;
@property (weak, nonatomic) IBOutlet UIButton *moreLessMenuButton;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *secondMenuRowViewHeightConstraint;
@property (weak, nonatomic) IBOutlet UIButton *askButton;
@property (weak, nonatomic) IBOutlet UIButton *contactButton;
@property (weak, nonatomic) IBOutlet UIButton *benchmarkButton;
@property (weak, nonatomic) IBOutlet UIButton *buySellButton;
@property (weak, nonatomic) IBOutlet UIButton *marketButton;

@property (nonatomic, weak) id <HomeHeaderCellDelegate> delegate;
@property BOOL isFullMenu;

- (void)toggleHeight;

@end

NS_ASSUME_NONNULL_END

В этой строке есть ошибка

- (void)didTapMoreLessMenuButton:(HomeHeaderCell *)cell;

это говорит:

Ожидаемый тип

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Компилятор должен знать, что класс HomeHeaderCell объявлен где-то.

На самом деле вам нужно импортировать класс с оператором @import, но в этом случае вам нужно толькотип, но не детали реализации.Директива @class является прямой ссылкой, которая подтверждает тип, но избегает проблем с циклической ссылкой.

Добавьте @class под строкой импорта, кстати, используйте современный оператор @import.

@import UIKit;
@class HomeHeaderCell;
0 голосов
/ 11 марта 2019

вы можете сделать это

#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol HomeHeaderCellDelegate;

@interface HomeHeaderCell : UITableViewCell
@property (nonatomic, weak) id <HomeHeaderCellDelegate> delegate;
@end

@protocol HomeHeaderCellDelegate <NSObject>
- (void)didTapMoreLessMenuButton:(HomeHeaderCell *)cell;
@end

NS_ASSUME_NONNULL_END
...