我有一个抓取10个对象的查询,我正在尝试一个动作,向您显示一个窗口,其中包含有关所选对象的更多信息,我只是新手Xcode并且无法弄清楚如何将信息推送到新视图控制器。这是我创建查询的代码。
PFQuery *query = [PFQuery queryWithClassName:@"Arcade"];
CLLocation *currentLocation = locationManager.location;
PFGeoPoint *userLocation =
[PFGeoPoint geoPointWithLatitude:currentLocation.coordinate.latitude
longitude:currentLocation.coordinate.longitude];
query.limit = 10;
[query whereKey:kPAWParseLocationKey nearGeoPoint:userLocation withinMiles:kPAWWallPostMaximumSearchDistance];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"Successfully retrieved %d scores.", objects.count);
// Do something with the found objects
int i = 0;
for (PFObject *object in objects) {
if (i >= [self.EventTitles count]) break;//to make sure we only write up to the max number of UILabels available in EventTitles
[(UILabel *)self.EventTitles[i] setText:[object objectForKey:@"name"]];//I assume the "objectId" property of object is an NSString!
i++;
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
这是推送到新视图控制器的操作:
-(IBAction)DetailEvent1:(id)sender{
TableDetailViewController *objDetail = [[TableDetailViewController alloc] initWithNibName:@"TableDetailViewController" bundle:nil];
[self addChildViewController:objDetail];
objDetail.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, self.view.bounds.size.height - 0.0f);
[self.view addSubview:objDetail.view];
}
如果有人可以帮助我编写需要添加到DetailEvent1操作的一行代码,以便推送所选对象,我将非常感激。
答案 0 :(得分:0)
TableDetailViewController *objDetail =
[[TableDetailViewController alloc]
initWithNibName:@"TableDetailViewController" bundle:nil];
objDetail.query = self.query
换句话说,这是您创建下一个视图控制器的那一刻。两个视图控制器现在处于联系状态(self
和objDetail
)。所以这是将数据从一个传递到另一个的时刻。
当然,没有TableDetailViewController
属性query
。还没!但是你要制作一个,不管怎么说 - 这样你就可以做出这个确切的动作。
哦,也许query
中也没有self
属性。但是你需要一个,因为你需要一种方法来保持你在第一种方法中得到的query
,这样你在第二种方法中仍然可以使用它。在同一对象的方法之间共享数据的方式通常是通过属性。
另请参见此示例from my book:
- (void)showItemsForRow: (NSIndexPath*) indexPath {
// create subtable of tracks and go there
TrackViewController *t =
[[TrackViewController alloc] initWithMediaItemCollection:
(self.albums)[indexPath.row]];
[self.navigationController pushViewController:t animated:YES];
}
在那个例子中,我走得更远:我实际上已经为TrackViewController提供了一个指定的初始化程序,以便我可以创建它并将数据全部交给一行。