2012-10-25 69 views
0

當我按下按鈕時,在創建UITextField時使用數組。我想添加一個新的按鈕,撤消功能。當我按下撤消按鈕,我創建的最後一個UITextField將被刪除。當我按下按鈕時,如何撤消UITextField?

在我ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController<UITextFieldDelegate> 
{ 

    NSMutableArray *textfieldform; 
    UITextField *textField1; 
} 

@property (nonatomic) NSInteger text1; 

@property (nonatomic, retain) NSMutableArray *textfieldform; 
@property (nonatomic, readwrite) int yOrigin; 
@property (nonatomic, readwrite) int xOrigin; 


-(IBAction) textFieldcreating; 
-(IBAction) undo; 


@end 

在我ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize text1, textfieldform, yOrigin, xOrigin; 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    //textfieldform = [[NSMutableArray alloc] init]; 
    // Do any additional setup after loading the view, typically from a nib. 
    textfieldform = [NSMutableArray arrayWithCapacity:0]; 
    yOrigin = 0; 
    xOrigin = 10; 

} 


-(IBAction)textFieldcreating{ 

    textField1 = [[UITextField alloc] initWithFrame:CGRectMake(xOrigin, yOrigin, 100, 40)]; 
    textField1.borderStyle = UITextBorderStyleRoundedRect; 
    textField1.font = [UIFont systemFontOfSize:15]; 
    textField1.placeholder = @"enter text"; 
    textField1.autocorrectionType = UITextAutocorrectionTypeNo; 
    textField1.keyboardType = UIKeyboardTypeDefault; 
    textField1.returnKeyType = UIReturnKeyDone; 
    textField1.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField1.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;  
    textField1.delegate = self; 

    [textfieldform addObject:textField1]; 
    [self.view addSubview:textField1]; 
    yOrigin = yOrigin + 40 + 10; 
    xOrigin = xOrigin + 20 + 10; 
    //old yorigin + btn height + y offset 

} 

-(IBAction)undo{ 
    if ([textfieldform count]>0) { 
     [textfieldform removeLastObject]; 
     [textField1 removeFromSuperview]; 
    } 
} 


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

    NSLog(@"textFieldShouldBeginEditing"); 
    return YES; 
} 
- (void)textFieldDidBeginEditing:(UITextField *)textField{   

    NSLog(@"textFieldDidBeginEditing"); 
    [textField1 setBackgroundColor:[UIColor colorWithRed:(248/255.0) green:(248/255.0) blue:(255/255.0) alpha:1.0]]; 
    textField1.borderStyle = UITextBorderStyleRoundedRect; 
} 
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ 

    NSLog(@"textFieldShouldEndEditing"); 
    textField.backgroundColor = [UIColor clearColor]; 
    return YES; 
} 
- (void)textFieldDidEndEditing:(UITextField *)textField{ 

    NSLog(@"textFieldDidEndEditing"); 
    [textField1 setBackgroundColor:[UIColor clearColor]]; 
    textField1.borderStyle = UITextBorderStyleNone; 
} 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 

    NSLog(@"textField:shouldChangeCharactersInRange:replacementString:"); 

    if ([string isEqualToString:@"#"]) { 
     return NO; 
    } 
    else { 
     return YES; 
    } 

} 
- (BOOL)textFieldShouldClear:(UITextField *)textField{ 

    NSLog(@"textFieldShouldClear:"); 
    return YES; 
} 
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ 

    NSLog(@"textFieldShouldReturn:"); 

    if (textField.tag == 1) { 
     textField1 = (UITextField *)[self.view viewWithTag:2]; 
     [textField1 becomeFirstResponder]; 
    } 
    else { 
     [textField resignFirstResponder]; 
    } 

    return YES; 
} 




@end 

回答

0

因爲您將您的文本框到一個數組剛剛得到這個數組的最後一個對象並將其從超級視圖中移除。

- (IBAction)undo:(id)sender { 
    UITextField *textFieldToRemove = [textfieldform lastObject]; 
    if (textFieldToRemove) { 
     [textfieldform removeObject:textFieldToRemove]; 
     [textFieldToRemove removeFromSuperview]; 
    } 
} 
+0

感謝它的工作。 :) – chineseGirl

0

給每個文本框根據他們所在的數組中的indexPath標籤。

-(IBAction)textFieldcreating{ 

UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(xOrigin, yOrigin, 100, 40)]; 
textField1.borderStyle = UITextBorderStyleRoundedRect; 
textField1.font = [UIFont systemFontOfSize:15]; 
textField1.placeholder = @"enter text"; 
textField1.autocorrectionType = UITextAutocorrectionTypeNo; 
textField1.keyboardType = UIKeyboardTypeDefault; 
textField1.returnKeyType = UIReturnKeyDone; 
textField1.clearButtonMode = UITextFieldViewModeWhileEditing; 
textField1.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;  
textField1.delegate = self; 

textField1.tag = textfieldform.count; 

[textfieldform addObject:textField1]; 
[self.view addSubview:textField1]; 
yOrigin = yOrigin + 40 + 10; 
xOrigin = xOrigin + 20 + 10; 
//old yorigin + btn height + y offset 

}

比你的理解過程的行動應該有類似

-(IBAction)undo{ //Should also check here if you actually have an object at that index path. (for example if there are no text fields created yet) 

UITextField *textField = (UITextField *)[self.view viewWithTag:textfieldform.count - 1]; 
textField = nil; 
[textField removeFromSuperview]; 
[textfieldform removeLastObject]; 

}

相關問題