2012-01-27 6 views
0

У меня есть эта проблема, когда я показываю представление предупреждения, а затем после нажатия кнопки некоторые методы должны запускаться, но ни один из них не будет.Методы, не отвечающие после нажатия кнопки UIAlerView

- (void)insertNewObject //Works fine 
{ 
//AlertView is a subclass of UIAlertView I created. 
    AlertView *al = [AlertView alloc]; 
    al = [al initWithTitle:@"title" message:@"message" delegate:[self view] cancelButtonTitle:@"cencel" okButtonTitle:@"ok"]; 
    [al.titlebox becomeFirstResponder]; 

    //[view setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
    [al show]; 
} /Till here everything works fine. 

Все приведенные ниже коды не работают. Или они работают, я просто не знаю, потому что они не бегут.

//This method does no run al all. 
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex2 
{ 

    if(buttonIndex2 == 0) 
    { 
     _buttonIndex = buttonIndex2; 
     [self showAbortAlert]; 

    } else 
    { 
    _buttonIndex = buttonIndex2; 
     [self addObject]; 
    } 
} 

- (void)addObject 
{ 
    if(_buttonIndex == 1) { 
     // Create a new instance of the entity managed by the fetched results controller. 
     NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
     NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
     NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

    // If appropriate, configure the new managed object. 
    // Normally you should use accessor methods, but using KVC here avoids the need to add a custom class to the template. 
    [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"]; 
    //[newManagedObject setValue:<#(id)#> forKey:<#(NSString *)#>]; 
    //[newManagedObject setValue:<#(id)#> forKey:<#(NSString *)#>]; 

    // Save the context. 
     NSError *error = nil; 
     if (![context save:&error]) { 
      /* 
      Replace this implementation with code to handle the error appropriately. 

      abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
      */ 
      NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 
    } else { 
     [self showAbortAlert]; 
    } 
} 

- (void)showAbortAlert 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Action Aborted" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [alert setAlertViewStyle:UIAlertViewStyleDefault]; 
    [alert show]; 
} 

Ошибок компиляции. Спасибо заранее!

ответ

2

Я не знаю, если это устранит все ваши проблемы, но в этом примере кода вы дали, вы, вероятно, устанавливается делегат ложно мнение, когда вы хотите, чтобы это было ViewController:

То есть вместо:

al = [al initWithTitle:@"title" message:@"message" delegate:[self view] cancelButtonTitle:@"cencel" okButtonTitle:@"ok"]; 

вы, вероятно, хотите сделать это:

al = [al initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"cencel" okButtonTitle:@"ok"]; 

Кроме того, поскольку вы alloc'ed тревогу, не забудьте освободить его после того, как вы назвали шоу.

//some code here 

[al show]; 
[al release]; 
} 
+0

Спасибо, попробуем сейчас. Мне не нужно выпускать, у меня включен ARC, и ARC «запрещает» [release]; –

+0

LOL не может поверить, что это было просто, спасибо! Всегда простые вещи, которые ускользают от меня. –

+0

Я счастлив, что смогу помочь :). Удачи с кодом! – cvursache

Смежные вопросы