2012-01-24 65 views
1

在我的應用程序有2種獨立的方式來獲得相同的UIViewController中,在途中要經過2個父ViewControllers創建使用故事板被加載並這樣完美的作品只是路過並通過每個segue過渡身份證。相同的UIViewController從2個不同的來源,但有不同的結果

另一種方式(這是我需要幫助)直接壓在RootViewController的一個按鈕去,它也只是通過將ID customly定義的對象稱爲事件。對於每個轉換的代碼如下:

從SEGUE:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    Event *event = [nEventList objectAtIndex:path.row]; 
    EventInfo *eventInfo = segue.destinationViewController; //Create new ViewController 
    eventInfo.eventID = event.id; 
} 

從按鈕:

- (void)FeaturedPressedAction:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    int tag = button.tag; 
    EventInfo *eventInfo = [[EventInfo alloc] init]; //Create new ViewController 
    eventInfo.eventID = @"1"; //There is an event with id '1' 
    [self.navigationController pushViewController:eventInfo animated:YES]; 
} 

和碼來設置的ViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    UIImage *image = [UIImage imageNamed:@"title.png"]; 
    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:image]; 

    SingletonClass* myapp = [SingletonClass sharedInstance]; 
    events = [myapp getEvents]; 

    // Loop to filter out the events that Do not have this ID 
    Event *event; 
    BOOL found = false; 
    for (int i = 0; i < [events count]; i++) { 
     if(!found){ 
      event = [events objectAtIndex:i]; 
      if([event.id isEqualToString: eventID]){ 
       found = true; 
       NSLog(@"Found the event with title %@", event.title); 
      } 
     } 
    } 

    self.eventTitle.text = event.title; 
    self.eventLocation.text = event.location; 
    self.eventDate.text = event.date; 
    self.eventTime.text = @"22:00"; 
    self.eventDescription.text = event.details; 
} 

它發現事件罰款,我可以用的NSLog的留在那裏,從按下按鈕來時正好沒有觀點負載見。我哪裏錯了?

回答

2

而不是ALLOC你EventInfo*,你應該從你的故事板實例它來代替。

所以在你FeaturedPressedAction與替換初始化行:

EventInfo *eventInfo = [self.storyboard instantiateViewControllerWithIdentifier:@"..."]; 

並確保您確定的ViewController在Interface Builder具有相同標識符。用有意義的東西替換...。

+0

太感謝你了,非常完美。 – SamRowley

+0

很高興,你發佈了所有正確的代碼並且很好地解釋了這個問題 - 總是讓它​​更容易幫助! – ikuramedia

相關問題