AlleWie Tabellenzeilen in Tabbar basierte Anwendung
Ich entwickle eine Demo-Anwendung mit Tab-Leiste Controller mit 3 Registerkarten in sie zu bearbeiten. In der ersten Registerkarte verwende ich einen Table-View-Controller.
Ich habe ein Problem beim Bearbeiten (Hinzufügen/Löschen) der Tabellenzeilen. Ich kann die Zeilen nicht aus der Tabelle hinzufügen oder entfernen.
Wenn ich diese Tabellenansicht ohne Tabbar-Steuerelement verwendet habe, konnte ich die Tabelle ändern. Hier teile ich meine tableviewcontroller.h und .m-Dateien.
**tableviewcontroller.h**
#import <UIKit/UIKit.h>
@interface TableViewViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
IBOutlet UITableView *tableView1;
SMutableArray *arry;
NSString *enteredText;
UITextField *myTextField;
NSInteger rowIndex;
}
@property(nonatomic,readonly)NSString *enteredText;
- (IBAction) EditTable:(id)sender;
@end
**TableViewViewController.m**
#import "TableViewViewController.h"
@implementation TableViewViewController
@synthesize enteredText;
- (void)viewDidLoad
{
arry=[[NSMutableArray alloc]initWithObjects:@"iPhone",@"MacMini",@"iMac",@"MacBookProAir",@"MacBookPro",nil];
self.title = @"Table View ";
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
[self.navigationItem setLeftBarButtonItem:addButton];
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (void)dealloc
{
[super dealloc];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int count = [arry count];
if(self.editing) count++;
return count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
}
int count = 0;
if(self.editing && indexPath.row != 0)
count = 1;
if(indexPath.row == ([arry count]) && self.editing)
{
cell.textLabel.text = @"ADD";
return cell;
}
cell.textLabel.text = [arry objectAtIndex:indexPath.row];
return cell;
}
- (IBAction)AddButtonAction:(id)sender
{
[arry addObject:@"asd"];
[tableView1 reloadData];
}
- (IBAction)DeleteButtonAction:(id)sender
{
[arry removeLastObject];
[tableView1 reloadData];
}
- (IBAction) EditTable:(id)sender
{
if(self.editing)
{
[super setEditing:NO animated:NO];
[tableView1 setEditing:NO animated:NO];
[tableView1 reloadData];
[self.navigationItem.leftBarButtonItem setTitle:@"Edit"];
[self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStylePlain];
}
else
{
[super setEditing:YES animated:YES];
[tableView1 setEditing:YES animated:YES];
[tableView1 reloadData];
[self.navigationItem.leftBarButtonItem setTitle:@"Done"];
[self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStyleDone];
}
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.editing == NO || !indexPath)
return UITableViewCellEditingStyleNone;
if (self.editing && indexPath.row == ([arry count]))
{
return UITableViewCellEditingStyleInsert;
}
else
{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
-(void)tableView:(UITableView *)aTableView commitEditingStyle:UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
//[arry removeObjectAtIndex:indexPath.row];
rowIndex=indexPath.row;
UIActionSheet *actionSheet=[[UIActionSheet alloc]
initWithTitle:@"Are you sure you want to delete this ?"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"Delete"
otherButtonTitles:nil,nil];
[actionSheet showInView:self.view];
[actionSheet release];
}
else if(editingStyle == UITableViewCellEditingStyleInsert)
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Enter Row value"
message:@"blank"
delegate:self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:@"OK!", nil];
myTextField= [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[alert addSubview:myTextField];
[alert show];
[alert release];
}
}
-(void) actionSheet:(UIActionSheet *) actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex;
{
if(buttonIndex==0)
{
[arry removeObjectAtIndex:rowIndex ];
[tableView1 reloadData];
}
else if (buttonIndex==1)
{
[tableView1 reloadData];
}
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
[tableView1 reloadData];
}
else if (buttonIndex == 1 && myTextField.hasText!=NO)
{
NSString *txt=[myTextField text];
[arry addObject:txt ];
[tableView1 reloadData];
}
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
@end
versuchen Sie "self.tableView1.editing" anstelle von "self.editing" und setzen Sie die Delegate- und Datenquelleprojekte von tableView1 – HarshIT