我在煩惱:)無法從一個UITableViewController「傳遞數據」到一個UIViewController
我無法acheive我的項目,因爲我無法從我的UITableView的數據傳遞給的DetailView(UIViewController中)
我是初學者,所以我當然做錯了什麼,但我不知道是什麼。我有紅色的幾個教程,它似乎是好的...但它不是!
這裏是我的UITableViewController的.H:
#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至極的interresting我的問題:
- (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(測試MainView)來檢查是否有我的NSDictionary _colzaInfos中的東西。
因此,這裏有我的.h和我DetailVieuw(UIViewController中)的.M
.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(測試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字典不是隨時分配和初始化的......但我試圖分配它並在detailViewController的.m中初始化它,但是我的日誌是在這個時候
TEST DetailView : {}
有人可以幫助我瞭解我做錯了什麼。
(如果你需要我的代碼另一部分檢查一番......隨便問。)
非常感謝幫助
當你告訴我這樣做,我有把代碼行放在這個地方,請讓我知道,如果我錯了。正如我在評論中所說的那樣,當我在這部分代碼中直接放置斷點時,以及當我運行程序時,斷點將停止NSLog之後的進程。如果我嘗試分配/ init之前,我什麼也沒有:測試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;
}
嗨,謝謝你的幫助。我只是試圖把你給我的代碼行放在你告訴我的地方,但它沒有改變任何東西。我已經把一個斷點放到了我輸入代碼行的地方,並且我看到函數「ViewDidLoad」首先被加載。所以在斷點停止的過程中,我已經有了「Null」的detailView打印日誌。我已經嘗試將該行直接放在viewDidLoad中,但是這次它使得我已經嘗試過的相同的事情,我什麼都沒有......只是「測試DetailView」:{}。我真的不明白爲什麼它不起作用:( – Romain 2012-03-14 19:37:27
也許重要的是你知道我使用故事板(也許我必須做一些特別的事情,特別是在這種情況下),我有一個TabBarController「管理「幾個UITableViewControllers(實際上6 ...都是」ColzaViewController「的唯一標識符,只是Xml鏈接的改變),我更喜歡給你這些信息。 – Romain 2012-03-14 20:50:36