从iPhone中的另一个类加载tableview

Iya*_*Iya 0 iphone xcode objective-c

我有一个RootViewController类和一个UserSettingsController类.我在RootViewController类中定义了UITableView方法(numberOfRowsInSection,cellForRowAtIndexPath).

我想从UserSettingsController类重新加载RootViewController类中定义的表视图.如何从UserSettingsController类中控制RootViewController类中的tableView对象?

我尝试了以下,但它尝试加载一个新的tableview对象.

RootViewController *rootViewController = [[RootViewController alloc]init]; 
[rootViewController.mytableView reloadData];
[rootViewController autorelease];
Run Code Online (Sandbox Code Playgroud)

Chi*_*tel 6

您可以rootViewController.mytableViewviewWillAppearRootViewController本身的方法中重新加载.rootViewController.mytableView当您要进入rootViewController视图时,这将重新加载.如果您要加载的数据不多(因为加载需要更多时间,比如从Web获取数据),您可以使用此解决方案.

否则,rootViewController.mytableView要从您的设置视图加载,您可以像这样使用NSNotification:

在RootViewController.m中:

//This goes in viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableViewData) name:@"ReloadRootViewControllerTable" object:nil];

Then make a method like this:
-(void) reloadTableViewData{

   [mytableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

在"设置"视图中,要重新加载RootViewController tableView,请写下:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadRootViewControllerTable" object:nil];
Run Code Online (Sandbox Code Playgroud)

这将自动调用RootViewController的reloadTableViewData方法,而无需进行子类化或任何操作.:)

利用带有自定义名称的通知来调用其他类中的静态方法.它们非常方便.