ボードを検索して検索しましたが、これを理解できません。シンプルで目の前にあるものでなければなりません。
コードをクリーンアップして、より再利用できるようにしようとしています。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"];