У меня неприятности:)
Я не могу получить свой проект, потому что не могу передать данные из моего UITableView в DetailView (UIViewController)
Я новичок, поэтому, конечно, я делаю что-то не так, но я не знаю что. У меня есть несколько красных уроков, и, кажется, все в порядке ... но это не так!
Вот .h моего UITableViewController:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "XMLParser.h"
#import "ColzaDetailViewController.h"
@interface ColzaViewController : UITableViewController <XMLParserDelegate>
{
XMLParser *parser;
NSDictionary *colzaInfos;
}
@property (nonatomic, retain) NSDictionary *colzaInfos;
@end
Я создал NSDictionary для хранения данных, которые мне нужно передать в detailView (ColzaDetailViewController)
Вот часть моего UITalbeViewController .h, которая интересует мою проблему:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ColzaDetailViewController *detailViewController = [[ColzaDetailViewController alloc] initWithNibName:@"ColzaDetail" bundle:[NSBundle mainBundle]];
colzaInfos = [parser.stories objectAtIndex:indexPath.row];
detailViewController._colzaInfos = colzaInfos;
[self.navigationController pushViewController:detailViewController animated:YES];
NSLog(@"TEST MainView : %@", detailViewController._colzaInfos);
detailViewController = nil;
}
Я думаю, что здесь все в порядке. Я поместил NSLog (TEST MainView), чтобы проверить, есть ли что-то в моем NSDictionary _colzaInfos.
Итак, вот мои .h и .m моего DetailVieuw (UIVIewController)
.h
#import <UIKit/UIKit.h>
#import "ColzaViewController.h"
@interface ColzaDetailViewController : UIViewController
{
IBOutlet UILabel *colzaSettle;
NSDictionary *_colzaInfos;
}
@property (nonatomic, strong) NSDictionary *_colzaInfos;
@property (nonatomic, retain) IBOutlet UILabel *colzaSettle;
@end
.m
#import "ColzaDetailViewController.h"
@implementation ColzaDetailViewController
@synthesize _colzaInfos, colzaSettle;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement loadView to create a view hierarchy programmatically, without using a nib.
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
colzaSettle = [_colzaInfos objectForKey:kCloture];
NSLog(@"TEST DetailView : %@", _colzaInfos);
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Как вы можете видеть в viewDidLoad, я поместил второй NSLog (TEST DetailView), чтобы еще раз проверить, есть ли что-то в моем Словаре
А вот и журнал:
2012-03-14 16:23:54.240 Mobile Settles[7173:f803] TEST DetailView : (null)
2012-03-14 16:23:54.241 Mobile Settles[7173:f803] TEST MainView : {
date = "13/03/2012\n ";
echeance = "Ao\U00fbt 2012\n ";
settle = "453.25\n ";
variation = "5.75";
}
Итак, как вы можете видеть, журнал для DetailView равен NULL, но в MainView содержит данные.
Но мне нужно получить эти данные в DetailView для их отображения.
Единственное, что кажется мне странным на этом шаге, это то, что _colzaInfos Dictionary не выделяется и не инициализируется в любое время ... Но я пытаюсь выделить его и инициализировать в .m элемента detailViewController, но в моем журнале был в это время
TEST DetailView : {}
Кто-то может помочь мне понять, что я делаю неправильно.
(если вам нужна другая часть моего кода, чтобы что-то проверить ... не стесняйтесь спрашивать.)
Большое спасибо за помощь
Как вы сказали, я поставил строку кода в этом месте, пожалуйста, дайте мне знать, если я ошибаюсь. И, как я сказал в комментарии, когда я ставлю точку останова непосредственно в этой части кода и когда я запускаю программу, точка останова останавливает процесс ПОСЛЕ NSLog. И если я пытаюсь выделить / инициализировать его раньше, у меня ничего нет: TEST detailView: {}.
Извините, но это не работает: (
код:
@implementation ColzaDetailViewController
@synthesize _colzaInfos, colzaSettle;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
if (! _colzaInfos)
_colzaInfos = [[NSDictionary alloc] init];
}
return self;
}