Как вызвать customview по действию кнопки? - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть демонстрационный проект, в котором у меня есть кнопка добавления. При нажатии кнопки я вызываю пользовательский вид. В этом пользовательском представлении я добавил вид выбора, панель инструментов и кнопку панели. По действию кнопки я вызываю этот пользовательский вид. Я использовал этот код ...

-(IBAction)Picker{

mpv_object  = [[MyPickerView alloc] initWithNibName:@"MyPickerView" bundle:nil];
[self.view addSubview:mpv_object];
[mpv_object release];

}

Но я даю ошибку, которую я дал ниже ...

2011-09-26 09: 49: 00.236 Интернет [440: 207] - [MyPickerView initWithNibName: bundle:]: нераспознанный селектор, отправленный экземпляру 0x4b4dcb0 2011-09-26 09: 49: 00.287 Web [440: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [MyPickerView initWithNibName: bundle:]: нераспознанный селектор, отправленный экземпляру 0x4b4dcb0' * стек вызовов при первом броске: ( 0 CoreFoundation 0x00daebe9 исключениеПроцесс + 185 1 libobjc.A.dylib 0x00f035c2 objc_exception_throw + 47 2 CoreFoundation 0x00db06fb - [NSObject (NSObject) делает NotRecognizeSelector:] + 187 3 CoreFoundation 0x00d20366 __ пересылка + 966 4 CoreFoundation 0x00d1ff22 _CF_forwarding_prep_0 + 50 5 Web 0x0000223a - [Выбор WebViewController] + 102 6 UIKit 0x002b7a6e - [UIApplication sendAction: до: от: forEvent:] + 119 7 UIKit 0x003461b5 - [UIControl sendAction: to: forEvent:] + 67 8 UIKit 0x00348647 - [UIControl (Internal) _sendActionsForEvents: withEvent:] + 527 9 UIKit 0x003471f4 - [UIControl трогает Завершено: withEvent:] + 458 10 UIKit 0x002dc0d1 - [UIWindow _sendTouchesForEvent:] + 567 11 UIKit 0x002bd37a - [UIApplication sendEvent:] + 447 12 UIKit 0x002c2732 _UIApplicationHandleEvent + 7576 13 GraphicsServices 0x016e4a36 PurpleEventCallback + 1550 14 CoreFoundation 0x00d90064 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52 15 CoreFoundation 0x00cf06f7 __CFRunLoopDoSource1 + 215 16 CoreFoundation 0x00ced983 __CFRunLoopRun + 979 17 CoreFoundation 0x00ced240 CFRunLoopRunSpecific + 208 18 CoreFoundation 0x00ced161 CFRunLoopRunInMode + 97 19 GraphicsServices 0x016e3268 GSEventRunModal + 217 20 графических сервисов 0x016e332d GSEventRun + 115 21 UIKit 0x002c642e UIApplicationMain + 1160 22 Web 0x00001f80 main + 102 23 Web 0x00001f11 начало + 53 ) прекращение вызова после выброса экземпляра 'NSException' Что за ошибка в этом?

Ответы [ 3 ]

0 голосов
/ 26 сентября 2011

unrecognized selector sent to instance предполагает, что суперкласс MyPickerView не знает, что такое initWithNibName:bundle, потому что UIView не знает этот метод (он существует в UIViewController).

0 голосов
/ 26 сентября 2011

Правильный способ сделать это будет что-то вроде этого

UIView *dpView;
NSArray *nibViews;
nibViews =  [[NSBundle mainBundle] loadNibNamed:@"DatePickerSliderViewNew" owner:self options:nil];
dpView = [ nibViews objectAtIndex: 0];
int outside = CGRectGetMaxY(self.view.bounds);
dpView.frame = CGRectMake(0, outside, 320, 260);
[self.view addSubview:dpView];
[UIView beginAnimations:nil context:nil];
dpView.frame = CGRectMake(0, outside - 260, 320, 260);
[UIView commitAnimations];
0 голосов
/ 26 сентября 2011

Звучит так, как будто MyPickerView является подклассом UIView.initWithNibName:bundle - это не метод, который существует на UIView подклассах.Это метод, который существует на UIViewController подклассах.Вот что означает сообщение об ошибке.

...