0

这是我的 .m 文件中的代码

@interface HomeWorkViewController ()



@end

@implementation HomeWorkViewController
@synthesize adView;
@synthesize myTableView, numbers;


-(void) viewDidLoad
{

   adView.delegate=self;
    [super viewDidLoad];

      self.navigationItem.leftBarButtonItem = self.editButtonItem;

    // check here if key exists in the defaults or not, if yes the retrieve results in array
    if([[NSUserDefaults standardUserDefaults] objectForKey:@"numberArray"] != nil) {
        self.numbers = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"numberArray"]];

    }

    //Register for the notification when user go to background or minimize the app, just save the array objects in the defaults

    [[NSNotificationCenter defaultCenter]   addObserver:self
                                               selector:@selector(appWillGoToBackground:)
                                                   name:UIApplicationWillResignActiveNotification
                                                 object:[UIApplication sharedApplication]];

    //Add the Add button
    UIBarButtonItem * addButton = [[UIBarButtonItem alloc]
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target: self action: @selector(insertNewObject)];

    self.navigationItem.rightBarButtonItem = addButton;
}

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.myTableView setEditing:editing animated:animated];

}
-(void)appWillGoToBackground:(NSNotification *)note {
    NSLog(@"terminate");

    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    [defaults setObject:self.numbers forKey:@"numberArray"];
    [defaults synchronize];

}

-(void)insertNewObject{
    //Display a UIAlertView
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Enter HomeWork" message: @"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];


    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alert show];


}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    //Only perform the following actions if the user hits the ok button
    if (buttonIndex == 1)
    {
        NSString * tmpTextField = [alertView textFieldAtIndex:0].text;



        if(!self. numbers){

            self.numbers = [[NSMutableArray alloc]init];
        }



        [self.numbers insertObject:tmpTextField atIndex:0];



        NSIndexPath * indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

        [self.myTableView insertRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationAutomatic];




    }

}

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        return self.numbers.count;
    }

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        static NSString *cellIdentifier = @"cell";

        UITableViewCell *cell = [ tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        if(cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault
                                          reuseIdentifier: cellIdentifier];
        }

        cell.textLabel.text = [self.numbers objectAtIndex:indexPath.row];

        return cell;
    }

    -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return YES;

    }

    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (editingStyle == UITableViewCellEditingStyleDelete)
        {
            //remove our NSMutableArray
            [self.numbers removeObjectAtIndex:indexPath.row];
            //remove from our tableView
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        }


    }


- (void)tableView:(UITableView *)tableView
moveRowAtIndexPath:(NSIndexPath *)fromIndexPath
toIndexPath:(NSIndexPath *)toIndexPath
{


}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    adView.hidden=FALSE;
    NSLog(@"Has ad, showing");

}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    adView.hidden=TRUE;
    NSLog(@"Has no ads, hiding");

}

-(void)dealloc
{



    [adView release];
    [super dealloc];


}


@end

我在那里有一个保存方法,但我想通过单击一个按钮来保存我在表格中更改的所有内容。我怎么做?我想放置一个带有按钮的工具栏,该按钮表示返回到主屏幕,并链接此按钮以将所做的所有操作保存到表中,例如删除、切换顺序和添加。

4

1 回答 1

0

您快到了 :)

您正在使用 numbers 数组作为表的数据模型。确保在操作表时始终更新此数组。(例如,您需要对中的 numbers 数组重新排序moveRowAtIndexPath。目前,您在该方法中什么也不做)

要使用按钮保存模型,只需在 Interface Builder 中创建一个 UIButton 并将其连接到以下操作:

- (IBAction)saveButtonWasPressed:(id)sender {
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    [defaults setObject:self.numbers forKey:@"numberArray"];
    [defaults synchronize];
}

如果您还想离开控制器,也许您还想从导航控制器堆栈中弹出 tableviewcontroller。

于 2013-04-03T21:51:54.933 回答