我已经搜索并搜索了董事会,但无法弄清楚这一点。它必须是一些简单的东西,就在我面前。
我正在尝试清理我的代码并使其更可重用。我正在使用一些从 UIViewController 工作的 UIActionSheet 代码并制作自己的目标文件。工作正常,直到我添加 UIActionSheetDelegate 方法。
当按下按钮时,它不会触发 actionSheetCancel 方法,而是崩溃且没有堆栈跟踪。每次。
我的代码如下。任何帮助,将不胜感激。我的猜测是因为我没有使用 xcode 故事板工具将事物连接在一起,但我认为这是合法的。
egcTestSheet.h:
#import <UIKit/UIKit.h>
@interface egcTestSheet : NSObject <UIActionSheetDelegate> {
}
- (void) showSheet:(UITabBar *) tabBar
displayTitle:(NSString *) name;
@end
egcTestSheet.m
#import "egcTestSheet.h"
@implementation egcTestSheet
-(void) showSheet:(UITabBar *)tabBar displayTitle:(NSString *)name{
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:name
delegate:self
cancelButtonTitle:@"Done"
destructiveButtonTitle:@"Cancel"otherButtonTitles:nil];
[menu showFromTabBar:tabBar];
[menu setBounds:CGRectMake(0,0,320, 700)];
}
// actionsheet delegate protocol item
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex: (NSInteger)buttonIndex{
NSLog(@"button index = %d", buttonIndex);
}
- (void)actionSheetCancel:(UIActionSheet *)actionSheet{
NSLog(@"in action canceled method");
}
@end
从 UIViewController 对象调用代码:
egcTestSheet *sheet = [[egcTestSheet alloc] init];
[sheet showSheet:self.tabBarController.tabBar displayTitle:@"new test"];