user2649355
user2649355

Reputation: 87

Crash attempting to set delegate of textfield

I have a lot of textfields and what I am trying to make them do is dismiss when the return key is used. In order for this to work you need to set the delegate of each textfield to self, like this [textfield setDelegate: self];. I have over 50 textfields in my project and in order to make it so they all dismiss I have to copy that line of code for each textfield. In the example below I used a for loop to try to shrink this down, but my project crashes and gives me this error when I try. Can someone tell me what im doing wrong and how i can fix this?

 //.h 
    @interface InsertScheduleCGPS : UIViewController <UITextFieldDelegate>{
        NSArray *Dayh;
        IBOutlet UITextField *Day11;
    }
    @property(nonatomic, assign) id<UITextFieldDelegate> delegate;
    @property (nonatomic,strong) NSArray *Dayh;

.

//.m
- (void)viewDidLoad
{

    [super viewDidLoad];

    Dayh = [NSArray arrayWithObjects:@"Day11", nil];

    NSLog(@"euf");

    for(int i=0; i<[self.Dayh count]; i++) {
      NSLog(@"dd%@",[self.Dayh objectAtIndex:i]);
       [[self.Dayh objectAtIndex:i] setDelegate: self];
}




 - (BOOL)textFieldShouldReturn:(UITextField *)Day11 {
        [[self view] endEditing:YES];



        return NO;
    }

ERROR:

    2014-01-18 19:15:26.712 Swepple[64912:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString setDelegate:]: unrecognized selector sent to instance 0x144ec'
*** First throw call stack:
(
    0   CoreFoundation                      0x0183b5e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x015be8b6 objc_exception_throw + 44
    2   CoreFoundation                      0x018d8903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x0182b90b ___forwarding___ + 1019
    4   CoreFoundation                      0x0182b4ee _CF_forwarding_prep_0 + 14
    5   Swepple                             0x0000bbd6 -[InsertScheduleCGPS viewDidLoad] + 4262
    6   UIKit                               0x00440318 -[UIViewController loadViewIfRequired] + 696
    7   UIKit                               0x004405b4 -[UIViewController view] + 35
    8   UIKit                               0x0044f361 -[UIViewController viewControllerForRotation] + 63
    9   UIKit                               0x00446f00 -[UIViewController _visibleView] + 84
    10  UIKit                               0x006d511a -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:] + 5199
    11  UIKit                               0x0044c0fc -[UIViewController presentViewController:withTransition:completion:] + 6433
    12  UIKit                               0x0044c61f -[UIViewController presentViewController:animated:completion:] + 130
    13  UIKit                               0x0044c65f -[UIViewController presentModalViewController:animated:] + 56
    14  UIKit                               0x00870e16 -[UIStoryboardModalSegue perform] + 271
    15  UIKit                               0x0086107e -[UIStoryboardSegueTemplate _perform:] + 174
    16  UIKit                               0x00442280 -[UIViewController performSegueWithIdentifier:sender:] + 72
    17  Swepple                             0x000052d4 -[SecondViewController insert:] + 244
    18  libobjc.A.dylib                     0x015d0874 -[NSObject performSelector:withObject:withObject:] + 77
    19  UIKit                               0x0032e0c2 -[UIApplication sendAction:to:from:forEvent:] + 108
    20  UIKit                               0x0032e04e -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    21  UIKit                               0x004260c1 -[UIControl sendAction:to:forEvent:] + 66
    22  UIKit                               0x00426484 -[UIControl _sendActionsForEvents:withEvent:] + 577
    23  UIKit                               0x00425733 -[UIControl touchesEnded:withEvent:] + 641
    24  UIKit                               0x0036b51d -[UIWindow _sendTouchesForEvent:] + 852
    25  UIKit                               0x0036c184 -[UIWindow sendEvent:] + 1232
    26  UIKit                               0x0033fe86 -[UIApplication sendEvent:] + 242
    27  UIKit                               0x0032a18f _UIApplicationHandleEventQueue + 11421
    28  CoreFoundation                      0x017c483f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    29  CoreFoundation                      0x017c41cb __CFRunLoopDoSources0 + 235
    30  CoreFoundation                      0x017e129e __CFRunLoopRun + 910
    31  CoreFoundation                      0x017e0ac3 CFRunLoopRunSpecific + 467
    32  CoreFoundation                      0x017e08db CFRunLoopRunInMode + 123
    33  GraphicsServices                    0x037e09e2 GSEventRunModal + 192
    34  GraphicsServices                    0x037e0809 GSEventRun + 104
    35  UIKit                               0x0032cd3b UIApplicationMain + 1225
    36  Swepple                             0x0000e04d main + 141
    37  libdyld.dylib                       0x01d7c70d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Upvotes: 2

Views: 173

Answers (1)

Martin R
Martin R

Reputation: 539745

You probably meant

Dayh = [NSArray arrayWithObjects:Day11, nil];

At present, Dayh is an array containing the string "Day11", not the text field.

Upvotes: 2

Related Questions