gpt4 book ai didi

ios - 从 UItableviewcell 重新加载 TableView 数据

转载 作者:行者123 更新时间:2023-11-29 04:29:00 25 4
gpt4 key购买 nike

我的 UITableviewcell 子类中有一个 IBaction,我很难让它重新加载 tableview 的数据。看起来很简单,但我尝试了很多工作人员,但没有任何效果。

下面是我在 UITableviewcell 中使用的代码,但没有重新加载:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}

- (IBAction)deleterow:(id)sender
{
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Delete content ?"
message:@"Do you want to delete ?"
delegate:self
cancelButtonTitle:@"Cancelar"
otherButtonTitles:@"Eliminar", nil];
[message show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];

if ([title isEqualToString:@"Eliminar"])
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"datatesting.plist"];
libraryContent = [[NSMutableArray alloc] initWithContentsOfFile:path];
[libraryContent removeObjectAtIndex:0];
NSLog(@"delete the Row:%@",libraryContent);
[libraryContent writeToFile:path atomically:YES];

UITableView *parentTable = (UITableView *)self.superview;
[parentTable reloadData];
}
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}

@end

从 UITableviewcell 重新加载数据的最佳方法是什么?

最佳答案

我不完全确定您的代码是如何连接的,但通常对于这样的事情,您应该通过将 tableview 的引用传递到子类的属性中来使用委托(delegate)模式:

subclass *s = [subclass alloc] init];
s.table = self.tableview;

然后当您想引用父表时,请这样做:

[self.table reloadData];

或者使用协议(protocol)/委托(delegate)组合,这确实是首选方法。像这样:

在子类中:

@protocol subclassdelegate <NSObject>
- (void)refreshParentTableView;
@end

在界面中设置委托(delegate)

@property (nonatomic,weak) id<subclassdelegate> delegate;

然后在需要时调用它,如下所示

[self.delegate refreshParentTableView];

现在,在父级中你需要做几件事调用您的子类并将 self 设置为委托(delegate)属性

subclass *s = [subclass alloc] init];
s.delegate = self;

然后在父类中实现协议(protocol)中定义的方法

- (void)refreshParentTableView {
[self.tableview reloadData]
}

两种方法都有效,但我建议您使用协议(protocol)方法。它是模式代码,但更容易理解并且可能更可靠。

祝你一切顺利。

关于ios - 从 UItableviewcell 重新加载 TableView 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com