2014-03-06 121 views
0

所以我有一个UIAlertView有两个按钮和一个TextField,我的问题是我想保存用户在文本字段中输入的文本保存到一个字符串“名称”,我有核心数据。我所有的核心数据编程都是正确的,我在UITextField上使用它,而不是在alertview上使用它。我只是不知道如何保存用户输入到UIAlertView的TextField中。如果有人可以帮助我,这将不胜感激。保存UIAlert TextField到核心数据

这里是我的警报视图是什么样子:http://gyazo.com/8eba23f1fb1f5fbe49738af9185e689f

我的UIAlertView中代码:

- (IBAction)button:(id)sender { 
    Lists *lists = [NSEntityDescription insertNewObjectForEntityForName:@"Lists" inManagedObjectContext:_managedObjectContext]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add List" message:@"Create a New Wish List" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil]; 
    [alert setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
    [alert setTag:2]; 
    [alert show]; 

    NSError *error = nil; 
    if (![_managedObjectContext save:&error]) { 
     //Handle 
    } 

回答

0

试试这个:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    Lists *lists = [NSEntityDescription insertNewObjectForEntityForName:@"Lists" inManagedObjectContext:_managedObjectContext]; 
    if (buttonIndex != 0 && alertView.tag == 2) { 
     NSString *name = [alertView textFieldAtIndex:0].text; 
     UITextField *tf = [alertView textFieldAtIndex:0]; 
     list.name =tf.text; 
} 
    { 
     NSError *error = nil; 
     if (![_managedObjectContext save:&error]){ 
      Handle; 
     } 
} 

} 
0

您将需要使用UIAlertViewDelegate捕捉用户输入从UITextField,用于警报视图。

让我们告诉你要使用委托,像这样的UIAlertView中:

UIAlertView *alert = ...; 
//other UIAlertView settings here 
alert.delegate = self; 

接下来,实现以下的委托方法在您的代码:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if ([buttonIndex != 0 && alertView.tag == 2) { 
      NSString *name = [alertView textFieldAtIndex:0].text; 
    } 
} 

当然,为了调用委托方法,您还需要符合头文件中的委托:

@interface CustomViewController : UIViewController <UIAlertViewDelegate> 
0

您需要在调用委托方法时从文本字段中提取字符串。

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

UITextField *tf = [alertView textFieldAtIndex:0]; 

Lists *lists = [NSEntityDescription insertNewObjectForEntityForName:@"Lists" inManagedObjectContext:_managedObjectContext]; 

lists.name =tf.text; 

// save to core data 

}