2011-10-24 19 views
0

iPhone Appで編集可能なテーブルを作成しようとしています。私には2つの質問があります。TableViewの編集ボタンを押したときに自己編集モードを起動できませんでした

  1. 編集ボタンを押して編集モードに入ると、行を削除できません。

  2. 私のコードで行ったのではなく、「新しいセルの追加」機能を追加する方法がある場合は、 (私はaddButtonActionメソッドを追加しました。)

をここに私の.h

#import <UIKit/UIKit.h> 

@interface FirstViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> 
{ 
    UITableView *table; 
    NSMutableArray *tableDataSource; 
} 

-(IBAction)addButtonAction:(id)sender; 

@end 

は、ここでは、削除することものtableViewから行を削除する場合

#import "FirstViewController.h" 

@implementation FirstViewController 

- (IBAction)addButtonAction:(id)sender 
{ 
    if(tableDataSource != nil) 
    { 
     [tableDataSource addObject:@"New City"]; 
    } 
    [table reloadData]; 
} 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (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. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    tableDataSource = [[NSMutableArray alloc]init]; 
    [tableDataSource addObjectsFromArray:[NSArray arrayWithObjects: @"Canada", @"United States", @"Australia", @"United Kingdom", nil]]; 

    table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 367) style:UITableViewStyleGrouped]; 
    [table setDataSource:self]; 
    [table setDelegate:self]; 
    [self.view addSubview:table]; 

    [[self navigationItem] setLeftBarButtonItem:[self editButtonItem]]; 

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
           target:self 
           action:@selector(addButtonAction:)]; 
    [[self navigationItem] setRightBarButtonItem:addButton]; 
} 

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

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [[self tableView] reloadData]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

#pragma mark - Table view data source 

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [tableDataSource 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]; 
    } 

    // Configure the cell... 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    cell.textLabel.text = [tableDataSource objectAtIndex:indexPath.row]; 

    return cell; 
} 

#pragma - Enable/Disable Edit Button 

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

    [table setEditing:editing animated:animated]; 
} 

#pragma - Editing Style 

// Override to support conditional editing of the table view. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
     // Delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 
    else if (editingStyle == UITableViewCellEditingStyleInsert) 
    { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    } 
} 

#pragma - Can Move Row 

// Override to support rearranging the table view. 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 
{ 
    NSString *item = [tableDataSource objectAtIndex:fromIndexPath.row]; 
    [tableDataSource removeObject:item]; 
    [tableDataSource insertObject:item atIndex:toIndexPath.row]; 
} 

// Override to support conditional rearranging of the table view. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

#pragma mark - Table Title 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if(section == 0) 
    { 
     return @"City"; 
    } 

    else 
    { 
     return @"Nothing here"; 
    } 
} 

#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section == 0) 
    { 
     //TBD.... 
    } 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

@end 

答えて

0
  1. .Mがいることを確認しますですNSArrayからのオブジェクト。
  2. Iが動作するthikこのaddButtonこれ

    IF(セル== NIL){ 細胞= [[ALLOCのUITableViewCell] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]。

    }

このように作る:

細胞= [[ALLOCのUITableViewCell] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]。

ただステートメントが削除されている場合は削除してください... 私はあなたの質問をこのヘルプと理解しています。

関連する問題