2011-04-08 4 views
0

Je suis un nouveau développeur d'applications iPhone. Mon application ne fonctionne pas lorsque j'appuie sur le bouton Supprimer du simulateur dans l'iPhone. J'ai copié du code de mon projet ici. J'espère pouvoir résoudre le bug si possible. Je me suis fatigué de trouver ce problème déjà, l'espoir peut m'aider à résoudre.iPhone: supprimer le bouton ne fonctionne pas

mon code ici.

FirstPage.h

#import <UIKit/UIKit.h> 


@interface FirstPage : UIViewController <UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate>{ 
    IBOutlet UIDatePicker *datePicker; 
    IBOutlet UITextField *eventText; 
    IBOutlet UITableView *tableview; 
    NSMutableArray *Array; 
    NSArray *notificationArray; 

    UILocalNotification *notif; 
} 
@property (nonatomic, retain) IBOutlet UIDatePicker *datePicker; 
@property (nonatomic, retain) IBOutlet UITextField *eventText; 
@property (nonatomic, retain) IBOutlet UITableView *tableview; 
- (IBAction) scheduleAlarm:(id) sender; 
//add,delete.edit table 

-(IBAction)EditTable:(id)sender; 


@end 

N mon FirstPage.m à ici.

#import "FirstPage.h" 


@implementation FirstPage 
@synthesize datePicker, eventText,tableview; 
- (void) viewWillAppear:(BOOL)animated { 
    [self.tableview reloadData]; 
} 
- (IBAction) scheduleAlarm:(id) sender { 
    [eventText resignFirstResponder]; 

    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; 

    // Get the current date 
    NSDate *pickerDate = [self.datePicker date]; 

    // Break the date up into components 
    NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
                fromDate:pickerDate]; 
    NSDateComponents *timeComponents = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit ) 
                fromDate:pickerDate]; 

    // Set up the fire time 
    NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
    [dateComps setDay:[dateComponents day]]; 
    [dateComps setMonth:[dateComponents month]]; 
    [dateComps setYear:[dateComponents year]]; 
    [dateComps setHour:[timeComponents hour]]; 
    // Notification will fire in one minute 
    [dateComps setMinute:[timeComponents minute]]; 
// [dateComps setSecond:[timeComponents second]]; 
    NSDate *itemDate = [calendar dateFromComponents:dateComps]; 
    [dateComps release]; 

    UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
    if (localNotif == nil) 
     return; 
    localNotif.fireDate = itemDate; 
    localNotif.timeZone = [NSTimeZone defaultTimeZone]; 

    // Notification details 
    localNotif.alertBody = [eventText text]; 
    // Set the action button 
    localNotif.alertAction = @"View"; 

    localNotif.soundName = UILocalNotificationDefaultSoundName; 
    localNotif.applicationIconBadgeNumber = 1; 

    // Specify custom data for the notification 
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"]; 
    localNotif.userInfo = infoDict; 

    // Schedule the notification 
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
    [localNotif release]; 

    [self.tableview reloadData]; 

} 
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
/* 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization. 
    } 
    return self; 
} 
*/ 
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    [eventText resignFirstResponder]; 
    return YES; 
} 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
//Array = [[NSMutableArray alloc]init]; 
    //notificationArray = [[NSArray alloc] initWithArray:Array]; 
    Array = [notificationArray mutableCopy]; 
    eventText.delegate = self; 
    [super viewDidLoad]; 
} 

#pragma mark - 
#pragma mark Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 1; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    int count = [Array count]; 
    if(self.editing) { 
     count++; 
     //return [[UIApplication sharedApplication]scheduleLocalNotifications]; 
     return count; 
    }else { 
     return [[[UIApplication sharedApplication] scheduledLocalNotifications] count]; 
    } 




} 


// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell... 

    notificationArray = [[UIApplication sharedApplication] scheduledLocalNotifications]; 
// notificationArray = Array; 
// [notificationArray mutableCopy]; 
    notif = [notificationArray objectAtIndex:indexPath.row]; 

    [cell.textLabel setText:notif.alertBody]; 
    [cell.detailTextLabel setText:[notif.fireDate description]]; 

    return cell; 
} 

- (IBAction)DeleteButtonAction:(id)sender 
{ 
// [Array removeLastObject]; 
    [Array removeLastObject]; 
    NSLog(@"testing in delete button..."); 
    //[tableview reloadData]; 
} 

- (IBAction) EditTable:(id)sender 
{ 
    if(self.editing) 
    { 
     [super setEditing:NO animated:NO]; 
     [tableview setEditing:NO animated:NO]; 
    // [tableview reloadData]; 
    // [self.navigationItem.leftBarButtonItem setTitle:@"Edit"]; 
    // [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStylePlain]; 
    } 
    else 
    { 
     [super setEditing:YES animated:YES]; 
     [tableview setEditing:YES animated:YES]; 
    // [tableview reloadData]; 
    // [self.navigationItem.leftBarButtonItem setTitle:@"Done"]; 
    // [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStyleDone]; 
    } 
} 

// The editing style for a row is the kind of button displayed to the left of the cell when in editing mode. 
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // No editing style if not editing or the index path is nil. 
    if (self.editing == NO || !indexPath) return UITableViewCellEditingStyleNone; 
    // Determine the editing style based on whether the cell is a placeholder for adding content or already 
    // existing content. Existing content can be deleted.  

     return UITableViewCellEditingStyleDelete; 

} 

// Update the data model according to edit actions delete or insert. 
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
    // [Array removeObjectAtIndex:[indexPath indexAtPosition:1]]; 
     [Array removeObjectAtIndex:indexPath.row]; 
    // [tableview deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 

     NSLog(@"at delete button mah?..."); 
     [tableview reloadData]; 
    } 
} 

#pragma mark Row reordering 
// Determine whether a given row is eligible for reordering or not. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 
// Process the row move. This means updating the data model to correct the item indices. 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
     toIndexPath:(NSIndexPath *)toIndexPath 
{ 
    NSString *item = [[Array objectAtIndex:fromIndexPath.row] retain]; 
    [Array removeObject:item]; 
    [Array insertObject:item atIndex:toIndexPath.row]; 
    [item release]; 
} 


/* 
// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations. 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 
*/ 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc. that aren't in use. 
} 

- (void)viewDidUnload { 
    datePicker = nil; 
    tableview = nil; 
    eventText = nil; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [super dealloc]; 
} 


@end 
+0

Veuillez expliquer ce que vous entendez par «ne fonctionne pas». Il est difficile d'aider sans savoir quel est le problème - tout message d'erreur pertinent serait utile. –

+0

dans ma vue de la table j'ai une rangée de données. Alors quand je clique sur le bouton de suppression ne fonctionnera pas. – ahyong87

+0

par 'ne fonctionne pas', voulez-vous dire que le bouton de suppression ne fait rien, ou que l'application entière se bloque? –

Répondre

0

Il est difficile de répondre de la de fait présenté par la question, mais il me semble que vous n'avez pas créé IBOutlet pour le bouton de suppression dans votre code et vous avez pas encore et son délégué dans IB .

+0

Merci de votre réponse, je vais vérifier à nouveau. – ahyong87