我正在试图弄清楚如何服用
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
,方法并从另一个视图控制器调用它。
在 LocationViewController.m
中- (void)viewDidLoad {
[super viewDidLoad];
//save bar button item
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle: @"Save" style: UIBarButtonItemStylePlain target: self action: @selector(saveButtonPressed)];
self.navigationItem.rightBarButtonItem = saveButton;
[self performSelector:@selector(saveButtonPressed) withObject:nil afterDelay:0.25];
}
-(void)saveButtonPressed {
//I want to call the method here
}
在 GameDetailsTableViewController.m
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifer1 = @"GameDetailsLocationCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer1];
cell.textLabel.text = @"hello world"
return cell;
}
我是IOS的初学者,我非常感谢任何帮助。
答案 0 :(得分:4)
您无法调用cellForRowAtIndexPath
,但可以从另一个类触发tableview的数据源方法。继承人如何
假设您想要从B类方法cellForRowAtIndexPath
someMethod
在班级A.m
-(void)viewDidLoad{
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(somemethodToReloadtableview) name:@"NOTIFICATIONNAME" object:nil];
}
//Implement the method
-(void)somemethodToReloadtableview{
[self.customTableViewName reloadData];
}
班级B.m
-(void)methodFromWhichYouWantToTrigger{
[[NSNotificationCenter defaultCenter]postNotificationName:@"NOTIFICATIONNAME" object:nil];
}
P.S - 此方法将调用tableview的所有数据源,例如numberOfRows
。
希望这有帮助
答案 1 :(得分:0)
我不确定您为什么要手动拨打tableView: cellForRowAtIndexPath:
。如果您希望表视图重新加载数据,可以在表视图上调用reloadData
方法。
[yourTableView reloadData];
如果您想从另一个视图控制器触发此操作,您可以从其他视图控制器发布通知,并从存在表视图的视图中侦听该通知。 Saheb的回答描述了如何发布通知并听取通知。