UIPickerView和放大器; ActionSheet

时间:2011-12-08 13:41:22

标签: objective-c

我尝试使用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

1 个答案:

答案 0 :(得分:0)

[UIPickerView_ActionSheetViewController DatePickerView]: unrecognized selector sent to instance 0x602dfb0

这告诉您的是,您正在向您的视图控制器实例发送消息DatePickerView,并且它无法识别它。

我无法在上面的代码中看到这样的调用,因此它可能位于项目的不同文件中,或者您在界面构建器中有旧的或重命名的插座连接。如果您从其他地方复制了此代码或某些资源,则需要更新它们以符合您的实际要求。