Array + UIView Controller + UITableViewController



我有一个UIViewController类和一个UITableViewController类。在UIViewController类中,我有一个NSMutableArray

我现在有一个问题,如何加载数据到我的表视图,一个单独的类,我必须访问NSMutableArray我用来填充以前的UIViewController类。

我尝试使用委托访问UIViewControllerClass中的数组,但是数组有"0对象",并且是NULL

我希望在正确的方向上得到一些指导。

你可以让一个视图控制器持有对另一个视图控制器的引用,并在其上查询公共NSMutableArray以获取数据。这是Aaron建议的,这可能是你最好的解决方案。

或. .你有多个视图控制器试图访问相同的数据集。可能还有其他类也想访问这些数据。你可能想要考虑将数据从视图控制器中提取出来并将其保存在一个中立的位置。你可以将它存储在AppDelegate中,然后从任何你需要它的地方引用应用程序委托。

id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
NSMutableArray *myData = appDelegate.data;

你也可以考虑把数据的所有逻辑和数据本身放到一个单独的类中,并使用Singleton,这将允许你从任何地方相当容易地访问/操作数据。

最后两个方法将数据与用户界面控制器对象隔离开来,并防止潜在不相关的对象需要相互保存引用。如果使用得当,它将降低代码的复杂性,并使将来的更改更容易管理。

UITableViewController类上创建一个NSMutableArray属性,如下所示:

@interface CustomTableViewController : UITableViewController
@property (strong, nonatomic) NSMutableArray *dataFromOtherClass;
@end

然后当你转换的时候,也许像这样,你可以设置dataFromOtherClass属性:

CustomTableViewController *controller = [[CustomTableViewController alloc] initWithNibName:@"CustomTableViewController" bundle:nil];
controller.dataFromOtherClass = myNSMutableArrayData; // <-- Set data like this        
[self.navigationController controller animated:YES];
// Or ...
[self presentViewController:controller animated:YES];
// Etc...

最新更新