2012-01-24 19 views
1

私のアプリケーションでは、同じUIViewControllerに到達する2つの別々の方法があります。ストーリーボードを使用して作成された2つの親ViewControllersを経由します。 idとsegueの各遷移を通じて同じUIViewControllerは2つの異なるソースからロードされていますが異なる結果で表示されます

もう1つの方法(私は助けが必要です)は、RootViewControllerで押されたボタンから直接移動し、Eventというカスタム定義のオブジェクトにidを渡すだけです。各遷移のためのコードは、以下である:ボタンから

- (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

EventInfo*を割り当てるのではなく、代わりにストーリーボードからインスタンス化する必要があります。そうで

あなたFeaturedPressedActionで初期化ラインを置き換える:

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

をそして、あなたが同じ識別子とInterface BuilderでのViewControllerを特定することを確認してください。 ...を何か意味のあるものに置き換えてください。

+0

ありがとう、完璧に働いています。 – SamRowley

+0

喜んで、すべての適切なコードを投稿し、問題をよく説明しました。 – ikuramedia

関連する問題