我尝试使用ActionSheet创建一个PickerView。代码在X代码中是正常的,但是当我运行它并按下“按钮”时会发生崩溃,请帮助检查我错过了什么?
谢谢。
这是.h文件
#import <UIKit/UIKit.h>
@interface UIPickerView_ActionSheetViewController : UIViewController <UIActionSheetDelegate, UIPickerViewDelegate>
{
IBOutlet UIButton *button;
}
@property (nonatomic, retain) UIButton *button;
- (IBAction)buttonPressed;
@end
这是.m文件
#import "UIPickerView_ActionSheetViewController.h"
@implementation UIPickerView_ActionSheetViewController
@synthesize button;
- (IBAction)buttonPressed
{
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"currentData"
delegate:self
cancelButtonTitle:@"Done"
destructiveButtonTitle:@"Cancel"
otherButtonTitles:nil];
UIPickerView *pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,40,480,200)];
pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;
[menu addSubview:pickerView];
[menu showInView:self.view];
[menu setBounds:CGRectMake(0,0,480, 320)];
[pickerView release];
[menu release];
}
- (void)dealloc
{
[button release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload
{
self.button=nil;
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
崩溃 int retVal = UIApplicationMain(argc,argv,nil,nil);
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
崩溃信息
#0 0x9631817a in __kill ()
#1 0x9631816c in kill$UNIX2003 ()
#2 0x963aa879 in raise ()
#3 0x963c09b8 in abort ()
#4 0x9619dfda in __gnu_cxx::__verbose_terminate_handler ()
#5 0x00f1c23b in _objc_terminate ()
#6 0x9619c17a in __cxxabiv1::__terminate ()
#7 0x9619c1ba in std::terminate ()
#8 0x9619c2b8 in __cxa_throw ()
#9 0x00f1c416 in objc_exception_throw ()
#10 0x00dca0bb in -[NSObject(NSObject) doesNotRecognizeSelector:] ()
#11 0x00d39966 in ___forwarding___ ()
#12 0x00d39522 in __forwarding_prep_0___ ()
#13 0x0001a4fd in -[UIApplication sendAction:to:from:forEvent:] ()
#14 0x000aa799 in -[UIControl sendAction:to:forEvent:] ()
#15 0x000acc2b in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#16 0x000ab7d8 in -[UIControl touchesEnded:withEvent:] ()
#17 0x0003eded in -[UIWindow _sendTouchesForEvent:] ()
#18 0x0001fc37 in -[UIApplication sendEvent:] ()
#19 0x00024f2e in _UIApplicationHandleEvent ()
#20 0x01001992 in PurpleEventCallback ()
#21 0x00da9944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#22 0x00d09cf7 in __CFRunLoopDoSource1 ()
#23 0x00d06f83 in __CFRunLoopRun ()
#24 0x00d06840 in CFRunLoopRunSpecific ()
#25 0x00d06761 in CFRunLoopRunInMode ()
#26 0x010001c4 in GSEventRunModal ()
#27 0x01000289 in GSEventRun ()
#28 0x00028c93 in UIApplicationMain ()
#29 0x00001c09 in main (argc=1, argv=0xbfffef8c) at main.m:14
也许这可以帮助更多
Attaching to process 606.
2011-12-10 06:37:08.456 UIPickerView_ActionSheet[606:207] -[UIPickerView_ActionSheetViewController DatePickerView]: unrecognized selector sent to instance 0x602dfb0
2011-12-10 06:37:08.458 UIPickerView_ActionSheet[606:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIPickerView_ActionSheetViewController DatePickerView]: unrecognized selector sent to instance 0x602dfb0'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dc85a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f1c313 objc_exception_throw + 44
2 CoreFoundation 0x00dca0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x00d39966 ___forwarding___ + 966
4 CoreFoundation 0x00d39522 _CF_forwarding_prep_0 + 50
5 UIKit 0x0001a4fd -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x000aa799 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x000acc2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
8 UIKit 0x000ab7d8 -[UIControl touchesEnded:withEvent:] + 458
9 UIKit 0x0003eded -[UIWindow _sendTouchesForEvent:] + 567
10 UIKit 0x0001fc37 -[UIApplication sendEvent:] + 447
11 UIKit 0x00024f2e _UIApplicationHandleEvent + 7576
12 GraphicsServices 0x01001992 PurpleEventCallback + 1550
13 CoreFoundation 0x00da9944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
14 CoreFoundation 0x00d09cf7 __CFRunLoopDoSource1 + 215
15 CoreFoundation 0x00d06f83 __CFRunLoopRun + 979
16 CoreFoundation 0x00d06840 CFRunLoopRunSpecific + 208
17 CoreFoundation 0x00d06761 CFRunLoopRunInMode + 97
18 GraphicsServices 0x010001c4 GSEventRunModal + 217
19 GraphicsServices 0x01000289 GSEventRun + 115
20 UIKit 0x00028c93 UIApplicationMain + 1160
21 UIPickerView_ActionSheet 0x00001cf9 main + 121
22 UIPickerView_ActionSheet 0x00001c75 start + 53
)
terminate called after throwing an instance of 'NSException'
Current language: auto; currently objective-c
答案 0 :(得分:0)
[UIPickerView_ActionSheetViewController DatePickerView]: unrecognized selector sent to instance 0x602dfb0
这告诉您的是,您正在向您的视图控制器实例发送消息DatePickerView
,并且它无法识别它。
我无法在上面的代码中看到这样的调用,因此它可能位于项目的不同文件中,或者您在界面构建器中有旧的或重命名的插座连接。如果您从其他地方复制了此代码或某些资源,则需要更新它们以符合您的实际要求。