2013-11-23 93 views
-1

我想在另一個視圖控制器中設置一個名爲BillTrackerViewController的數組,以獲取名爲billtrackertablevalues的NSMutableArray的值,該值位於主類MainViewController中。我打算使用BillTrackerViewController中的數組作爲UITableView的數據。但是,當我嘗試設置該數組的值,table_items和segue時,該表不顯示任何內容。然而,billtrackertablevalue的價值是正確填充的,並且不爲空。Segue將不會傳遞數據

這裏是我的MainViewController代碼:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"toBillTracker"]) { 
     PFQuery *query = [PFQuery queryWithClassName:@"Resolution"]; 
     [query whereKey:@"event" equalTo:event_name_label.text]; 
     [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
      if (!error) { 
       for (PFObject *object in objects) { 
        [billtrackertablevalues addObject:[NSString stringWithFormat:@"%@\nPro: %@\nCon: %@\nResult: %@",[object objectForKey:@"resolution_name"], [object objectForKey:@"resolution_pro_speaker"], [object objectForKey:@"resolution_con_speaker"], [object objectForKey:@"resolution_result_id"]]]; 
       } 
       NSLog(@"%@", billtrackertablevalues); 
       BillTrackerViewController *controller=(BillTrackerViewController *)segue.destinationViewController; 
       controller.table_items = [[NSMutableArray alloc] init]; 
       controller.table_items = billtrackertablevalues; 
      } else { 
       NSLog(@"Error: %@ %@", error, [error userInfo]); 
      } 
     }]; 
    } 
} 

這裏是我的BillTrackerViewController代碼:

#import "BillTrackerViewController.h" 
#import "Parse/Parse.h" 

@interface BillTrackerViewController() 

@end 

@implementation BillTrackerViewController 

@synthesize billView; 
@synthesize refreshButton; 

@synthesize table_items; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [billView reloadData]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { } 
    return self; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [table_items count]; 
} 

- (UITableViewCell *)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"]; 
    } 

    NSString *cellText = table_items[indexPath.row]; 
    cell.textLabel.text = cellText; 
    return cell; 
} 

@end 

再次,在BillTrackerViewController表不加載值,但我最初的陣列,billtrackertablevalues,填充。

在此先感謝,夥計們!

+0

你不應該發表這個相同的問題兩次。我在第一篇文章中回答了這個問題。 – rdelmar

回答

1

更改下面的代碼: -

controller.table_items = [[NSMutableArray alloc] init]; 
controller.table_items = billtrackertablevalues; 

像如下: -

controller.table_items = [[NSMutableArray alloc] initWithArray:billtrackertablevalues]; 

之後做NSLog在BillTrackerViewController在viewDidLoad方法,讓我知道。希望它能起作用。

+0

在viewDidLoad方法中將NSLog放入BillTrackerViewController後,即使填充了MainViewController中的billtrackertablevalues數組,它也返回「(null)」。但是,來自BillTrackerViewController的日誌出現在billtrackertablevalues數組的日誌之前,這可能表示兩個方法執行時的時間問題。 – LordChiu

+0

@ user2520999嗯,它的原因是計時問題,因爲你在這裏設置了數組塊方法。你必須先執行PFQuery塊方法,然後你必須執行Segue方法。 –