2014-01-24 5 views
0

개체 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
TableDetailViewController *objDetail = 
    [[TableDetailViewController alloc] 
     initWithNibName:@"TableDetailViewController" bundle:nil]; 
objDetail.query = self.query 

즉, 다음보기 컨트롤러를 만드는 순간입니다. 이제 두 개의 뷰 컨트롤러가 연결됩니다 (selfobjDetail). 그래서 이것은 하나에서 다른쪽으로 데이터를 전달할 순간입니다.

물론 TableDetailViewController 속성 query은 없습니다. 아직! 그러나 당신은 하나를 만들 것입니다, 당신은 보지 마세요 - 그래서 당신은이 정확한 움직임을 만들 수 있습니다.

아, 그리고 아마도 에도 query 속성이 없습니다. 그러나 두 번째 방법에서 여전히 사용할 수 있도록 첫 번째 방법을 가지고있는 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에게 지정된 초기화를 준 한 줄.

+0

모든 것이 의미가 있지만 어느 컨트롤러에서도 쿼리가 선언되지 않는다는 것이 맞습니다. 어떻게 쿼리를 선언해야합니까? – user3205645

+0

Objective-C와 객체 및 클래스 작동 방법을 배우는 것이 좋습니다. [재산이란 무엇입니까] (http://www.apeth.com/iOSBook/ch12.html#_properties_2) 및 신고 방법 ... 그리고 왜 ... – matt

관련 문제