OGeek|极客世界-中国程序员成长平台

标题: ios - 将数据从 ViewController 传递到实例化的自定义 viewcontroller [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:57
标题: ios - 将数据从 ViewController 传递到实例化的自定义 viewcontroller

我正在尝试将数据从我的数据库传递到在此函数中实例化的新 View Controller 中的 UILabels 中。我已经测试了数据是否被正确抓取,并且工作正常。

我相信我没有正确引用 DataViewController 中的 UILabel 进行实例化。当我尝试 NSLog (dataViewController.cartAddress) 时,我得到空值

有什么帮助吗?

ViewController.m

- (void) mapViewGMSMapView *)mapView didTapInfoWindowOfMarker:    (GMSMarker *)marker {
NSObject_DatabaseHelper *dataToPush = [NSObject_DatabaseHelper getSharedInstance];
NSArray *cartDataToPush = [dataToPush findByName:marker.title];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName"Main" bundle:nil];
DataViewController *dataViewController = (DataViewController *)[storyboard instantiateViewControllerWithIdentifier"dataViewController"];

dataViewController.cartAddress.text = cartDataToPush[0];
dataViewController.thumbsUp.text = cartDataToPush[3];
dataViewController.thumbsDown.text = cartDataToPush[4];
dataViewController.pitaBool.text = cartDataToPush[5];
dataViewController.drinkBool.text = cartDataToPush[6];
dataViewController.greenSauceBool.text = cartDataToPush[7];


[self.navigationController pushViewController:dataViewController animated:YES];



Best Answer-推荐答案


当你实例化 viewController 时,它还没有设置它的 UI。 因此,在 viewController 的 viewDidLoad 回调触发之前,您将无法与 UILabel 进行交互。因此,最好的方法是设置 NSString 属性并在 viewDidLoad 中将它们设置为 UILabel。类似的东西

@property (nonatomic, strong) NSString *cartAddressText;
/* ... */

然后在 viewDidLoad 中

- (void) viewDidLoad {
     [super:viewDidLoad];
     self.cartAddress.text = self.cartAddressText;
     /* ... */
}

关于ios - 将数据从 ViewController 传递到实例化的自定义 viewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30008174/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4