0

我有一個tableviewcontroller數據人口它。我試圖在用戶點擊單元格時獲得新的細節視圖。我可以加載視圖,但更詳細顯示數據的標籤不會更新。以下是代碼:數據未被傳遞到視圖控制器時推

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

SearchDetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"searchDetailVC"]; 
Events *event = [events objectAtIndex:indexPath.row]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
NSString *dateString = [dateFormatter stringFromDate:event.eventDate]; 

controller.title=event.eventName; //ONLY ONE THAT WORKS! 


controller.eventName.text = event.eventName; 
controller.eventAddress.text = event.eventAddress; 
controller.eventDate.text = dateString; 
controller.eventTime.text = event.eventTime; 
controller.ratingView.image = [self imageForRating:event.eventRating]; 
controller.eventDistance.text = @"NOT YET IMPLEMENTED"; 

[self.navigationController pushViewController:controller animated:YES]; 
} 

設置的唯一屬性是NavigationController導航欄的標題。我在做什麼大錯特錯?

+1

是指向視圖中元素的eventName,eventAddress等出口?看起來像在你推新控制器的時候視圖沒有被加載。也許將它們存儲在視圖控制器的實例變量中,然後在'viewDidLoad'中設置UI元素? – 2012-01-10 07:08:05

回答

1

你不能傳遞這樣的數據。 ViewController.domainField當時爲零,因爲視圖還沒有加載,並且當視圖加載時(通過筆尖)而不是視圖控制器對象被創建時,標籤/ TextField被創建。

此代碼可以幫助您

SearchDetailViewController.h 
    #import <UIKit/UIKit.h> 
    @interface SearchDetailViewController : UIViewController 
    { 

     NSString* eventNameString ; 
     NSString* eventAddressString; 
     ........... 
     ............. 

    } 
    @property (nonatomic,retain) NSString* eventNameString ; 
    @property (nonatomic,retain) NSString* eventAddressString; 
    ............... 
    ............... 
    @end 


SearchDetailViewController.m 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    eventName.text=eventNameString; 
    eventAddress.text=eventAddressString; 
    .......................... 
    .......................... 
    eventNameString=[[NSString alloc]initWithString:@""]; 
} 


TableView.m 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

SearchDetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"searchDetailVC"]; 
Events *event = [events objectAtIndex:indexPath.row]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
NSString *dateString = [dateFormatter stringFromDate:event.eventDate]; 

controller.title=event.eventName; //ONLY ONE THAT WORKS! 


controller.eventNameString=[[NSString alloc]initWithString:event.eventName]; 
controller.eventAddressString=[[NSString alloc]initWithString:eventAddress]; 
............................... 
............................... 
............ 

[self.navigationController pushViewController:controller animated:YES]; 
} 

同樣,你必須從一個視圖傳遞所有數據,以另一種觀點 - 你不能直接分配給控制器。

+0

謝謝,我已經實現了,但是當代碼到達'[self.navigationController pushViewController:controller animated:YES];'我得到錯誤'***終止應用程序由於未捕獲的異常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:該類不是關鍵字值,它是關鍵字buyButton.''的編碼標準。現在我已經刪除了這個按鈕的所有引用(它在單元格上),甚至刪除了按鈕本身。爲什麼這甚至被提及? – 2012-01-10 17:49:12

相關問題