2014-04-06 33 views
0

我有一個容器視圖內的tableview。當用戶選擇任何行時,在父控制器中調用一個方法,告訴父控制器執行一個循環。但是,我無法弄清楚爲什麼它不起作用。代碼從tableView中的didSelectRow函數調用。該方法執行,但它給我一個關於沒有與該標識符繼續的錯誤。XCode 5與prepareforsegue調用類

然而,當我從父視圖控制器內調用方法(listJobsOfSite)它的工作原理。

(的tableview)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.jobVC listJobsOfSite:@"locPwn"]; 
} 

父視圖控制器

-(void)listJobsOfSite:(NSString *)site 
{ 
    [self performSegueWithIdentifier:@"JobSegue2" sender:nil]; 
} 

編輯: 的賽格瑞是視圖控制器1,和視圖控制器之間2.視圖控制器1保持的容器視圖,它再次擁有一個表格視圖控制器。該控制器的tableview應該告訴視圖控制器1 Segue公司進入視圖控制器2.

編輯2: 截圖http://tinypic.com/r/30x7dr9/8

+0

之間什麼,究竟是什麼'segue'?我猜它是在父代和下一代ViewController之間,而你試圖通過子控制器和下一個ViewController來做到這一點。我會告訴家長,它需要執行賽格。 – Larme

+0

segue位於視圖控制器1和視圖控制器2之間。視圖控制器1擁有一個容器視圖,該容器視圖又包含一個表視圖控制器。這個桌面視圖控制器應該告訴視圖控制器1繼續進入視圖控制器2. – Runar

回答

2
  1. 你不叫班。你正在尋找的詞是「方法」。您通話您listJobsOfSite 方法這是在父視圖控制器

  2. 有你確信你已經給SEGUE的標識?在Storyboard中,您應該點擊Segue,檢查它,然後在標記爲「標識符」的字段中輸入「JobSegue2」。

  3. 如果你做第2步,你需要一個容器看法?你想用Container View + TableView完成什麼?這聽起來像你的設計會更有意義,而該容器視圖和TableView中的視圖控制器的屬性1.

如果你的心臟上設置使用容器視圖,在你的故事板儘量控制+拖動從你的TableView單元格到你的視圖控制器2.名稱繼續「JobSegue2」。那麼你不需要在你的didSelectRow方法中調用任何方法。你也不需要從視圖控制器1到2的故事板繼續。看起來像this question有你想要的行爲(問題,而不是答案!他有相反的問題,你是)。

編輯:剛纔注意到您在容器視圖中具有導航控制器,所以我的建議上面很可能會推動容器視圖中查看控制器2。我完全被你想做的事弄糊塗了。

+0

1.是的,謝謝你清理它。我將編輯我的帖子。是的,標識符在那裏。從父視圖控制器中調用該方法,但不能從子視圖控制器調用該方法。 – Runar

+0

是否有任何理由在父視圖控制器中使用segue代碼?我不太瞭解你設計這種方式的方式,或者你爲什麼需要從父母處調用segue。看起來你想從TableView繼續到另一個視圖,所以segue方法應該在你的TableViewController中。 – CocoaDog

+0

我最初嘗試過。以下崩潰與相同的錯誤。我知道賽格在那裏。 - (void)viewDidLoad {self.jobVC = [[JobViewController alloc] init]; (無效)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath [self.jobVC performSegueWithIdentifier:@「JobSegue2」sender:Nil]; } – Runar

相關問題