29,028
社区成员
发帖
与我相关
我的任务
分享
#import "LeftMenuControl"
@interface SelectMenuViewController:UIViewController <MenuItemDelegate>
@property (strong) LeftMenuControl *leftMenu;
@end
--------------------实现---------------------
#import "MenuItem"
@implementation SelectMenuViewController
-(void)viewDidLoad {
leftMenu=[[LeftMenuControl alloc] initWithFrame:.....];
NSMutableArray *items=@{@{MenuID:1,MenuName:@"冷菜类"},@{MenuID:2,MenuName:@"海鲜类"}}; ////此处省略300字
[leftMenu setItems:items];
[leftMenu setDelegate:self]; ////设置代理
}
//////在控制器中实现协议方法
-(void) menuItemDidSelected:(MenuItem *)item index:(NSInteger)index {
NSLog("you selected menu is :%@ at index:%d",[item description] , index);
}
@end
@interface MenuItem:NSObject
@property (nonatomic) NSInteger MenuID;
@property (strong) NSString *MenuName;
@end
这个代理协议需要在点击某个菜品类时需要传递的数据,应该有菜单索引,及菜单实体
@protocol MenuItemDelegate: <NSObject>
-(void)menuItemDidSelected:(MenuItem *)item index:(NSInteger)index;
@end
这个控件大体应该这样
@protocol MenuItemDelegate
@class MenuItem;
@interface LeftMenuControl:UIView
@property (strong) NSMutableArray *items; /////store all of the menu item
@property (nonatomic,weak) id<MenuItemDelegate> delegate;
@end
在它的实现文件中应该这样
@implementation LeftMenuControl
////当其中某个menu的button被选中时的事件处理
-(void)menuSelected:(id)sender {
UIButton *menuBtn=(UIButton *)sender;
NSInteger index=menuBtn.tag;
if ([self.delegate isRespondToSelector:@selector(menuItemDidSelected:index:)]) {
[self delegate menuItemDidSelected:[self.items objectAtIndex:index] index:index];
}
}
@end