Я пытаюсь установить массив в другом контроллере представления, названном BillTrackerViewController, на значения NSMutableArray, называемые значениями billtrackertablevalues, расположенными в основном классе MainViewController. Я намерен использовать массив в BillTrackerViewController в качестве данных для UITableView. Однако, когда я пытаюсь установить значение этого массива, table_items и segue, таблица ничего не показывает. Однако значение billtrackertablevalues правильно заполнено и НЕ равно нулю.Segue не будет передавать данные в TableView
Вот мой код 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);
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
BillTrackerViewController *controller=(BillTrackerViewController *)segue.destinationViewController;
controller.table_items = [[NSMutableArray alloc] init];
controller.table_items = billtrackertablevalues;
}
}
И вот мой код 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, заполняется.
Заранее спасибо, ребята!
Проверьте значение billtrackertablevalues непосредственно перед последней строкой в prepareForSegue. Я думаю, что это временная проблема - метод, findObjectsInBackgroundWithBlock: может быть возвращен непосредственно перед выполнением блочного кода. Кроме того, эта строка, controller.table_items = [[NSMutableArray alloc] init] ;, бесполезна и должна быть удалена. – rdelmar
См. Ответ здесь: http://stackoverflow.com/a/20158584/952440 Может быть, это будет полезно. –