我有一个modalViewController,它通过tableView出现在viewController的顶部。当用户单击modalViewController上的按钮时,我想在viewController中重新加载tableView:
[tableView1 reloadData];
当我不需要tableView重新加载时(例如,当用户单击后退按钮返回tableView时),我不想将重载加载到viewDidAppear或viewWillAppear方法中。
有办法做到这一点吗?
答案 0 :(得分:2)
尝试
1)编写一个reloads
table data
。
2)点击后面button
调用它。
答案 1 :(得分:2)
这是经典的委托模式问题,在你的模态视图控制器中,你需要一个代表引用当前视图控制器来呈现它
//Modal
@protocol ModalVCDelegate
- (void)tappedBackButton;
@end
@class ModalVC: UIViewController
@property id<ModalVCDelegate> delegate;
@end
@implementation
- (void)backButtonTapped:(id)sender
{
if (self.delegate)
[self.delegate tappedBackButton];
}
@end
现在,在您的演示VC中,只需处理此委托消息
//Parent VC
- (void)showModal
{
ModalVC *vc = [ModalVC new];
vc.delegate = self;
//push
}
- (void)tappedBackButton
{
[self.tableView reloadData];
//close modal
}
答案 2 :(得分:1)
您可以使用委托。如果发现它更难,那么替代方法是使用NSNotificationCenter
。您可以看到Refreshing TableView的已接受答案。这真的是非常简短,容易理解的方式。
答案 3 :(得分:0)
尝试使用此
创建一个按钮并单击此按钮,然后您可以重新加载数据。 此按钮可自定义并在背景上使用。
- (IBAction)reloadData:(id)sender
{
[tblView reloadData];
}
答案 4 :(得分:0)
使用通知如下方法: -
在yourViewController的NSNotificationCenter
Mehod
ViewdidLoad
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(ReloadDataFunction:)
name:@"refresh"
object:nil];
[super viewDidLoad];
}
-(void)ReloadDataFunction:(NSNotification *)notification {
[yourTableView reloadData];
}
现在您可以从您的modelViewController BackButton调用此通知,或者您想要调用此Refresh通知,例如放置以下代码行: -
[[NSNotificationCenter defaultCenter] postNotificationName:@"refresh" object:self];
注意: postNotificationName:@"refresh"
这是特定通知的关键
答案 5 :(得分:-2)
You can use NSNotification to refresh table on ViewController.
Inside viewController :
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
Write code in viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reloadMainTable:)
name:@"ReloadTable"
object:nil];
- (void) reloadMainTable:(NSNotification *) notification
{
[tableView reload];
}
Inside ModelViewController:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ReloadTable"
object:nil];
Here you can also send custom object instead of nil parameter. But be care full about removal of NSNotification observer.