我正在使用Xcode 5.1.1。
为iPhone创建单一视图应用。我在Xcode iOS模拟器中测试,一切正常,直到我尝试删除。多次检查代码。在应用程序“编辑” - >红色“减号”出现在每一行然后我按下“减号”并出现红色“删除”按钮,无法按下。
#import "ViewController.h"
#import "AddViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize data;
- (void)viewDidLoad
{
[super viewDidLoad];
data = [[NSMutableArray alloc] initWithObjects: @"item1", @"item2", @"item3", nil];
self.navigationItem.leftBarButtonItem = self.editButtonItem;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - Table view data source
-(NSInteger) numberOfSectionsInTableView: (UITableView *) tableView {
return 1;
}
-(NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection:(NSInteger)section {
return [data count];
}
-(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
[[cell textLabel] setText:[data objectAtIndex:[indexPath row]]];
return cell;
}
// Called after 'Save' is tapped on the AddViewController
- (IBAction) unwindToTableViewController: (UIStoryboardSegue *) sender {
AddViewController *addViewController = (AddViewController *) [sender sourceViewController];
NSString *text = [[addViewController textField] text];
if(![text length] == 0 && ![[text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) {
// add it to the tap of the data source
[data insertObject:text atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
// insert it into tableView
[[self tableView] beginUpdates];
[[self tableView] insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[[self tableView] endUpdates];
}
}
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[[self tableView] setEditing:editing animated:animated];
}
- (void)tableView:(UITableView *)tableView comitEditingStyle: (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath: (NSIndexPath *) indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[data removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
@end
答案 0 :(得分:0)
您处理删除,但似乎没有启用它:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
答案 1 :(得分:0)
听起来你在删除事件后没有重新加载数据。
点击删除按钮后,从数据源中删除数据后,请致电
[self.tableView reloadData];
看看是否有效。
答案 2 :(得分:0)
您在方法名称中将commit
误解为comit
。不确定这是否是 问题,但肯定是 问题。它应该是
- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath: (NSIndexPath *) indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[data removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
答案 3 :(得分:0)
这与您设置自动调整屏幕的方式有关 - 它是在iOS 7上呈现的奇怪行为。尝试在viewDidLoad函数中调用它 - [self view].autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight
这对于您的tableView - {{ 1}}。我在应用程序中遇到了同样的问题并修复了它。
答案 4 :(得分:0)
- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath: (NSIndexPath *) indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[data removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView reloadData];}