2015-01-11 8 views
0

:이 기능을 사용할 때SEGUE VS didDeselectRowAtIndexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let story = ["News","Video","Twitter","Request Info","More"] 

    let vc = self.storyboard?.instantiateViewControllerWithIdentifier(story[indexPath.row]) as NewsFeedTableViewController 
    self.presentViewController(vc, animated: true, completion: nil) 

} 

Navigation Bar는 표시되지 않습니다. 하지만 segue를 사용하면 Navigation Bar이 나타납니다.

이제 문제는 다음과 같습니다

tableView에서
  1. Cells이 SEGUE 수없는 1 개 이상의 스토리 보드
  2. 네비게이션 바

모든 (Segue를 필요로 보인다) 앱에서 스크롤해야 이것을 통해 해결책?

답변

2

너는 presentViewController을 사용하고있다. 그래서 네비게이션 바를 얻지 못하고, 모달로보기를 제공한다. 그 pushViewController 같이하는 대신 :

self.navigationController?.pushViewController(vc, animated: true) 

아마 스토리 보드에 SEGUE 유형이 push 될 것입니다 당신이 탐색 모음을 받고, 그 이유입니다.

당신은 다음에 관심이있을 수 있습니다

  1. presentViewController:animated:completion:
  2. 당신은 그것을 밀어하지, 다음 뷰 컨트롤러를 제시하는
  3. ViewController Programming Guide for iOS
+0

기본 뷰 컨트롤러 인'TableViewController' 만 밀어 넣기 때문에 정상적인'ViewController'를 가져올 수 없습니다. 스위프트는 "신속한 동적 계급 실패"라고 말합니다. 이것에 대한 해결책은 무엇입니까? – tika

+0

@ user2078462 : 아니요, 맞지 않습니다. 어떤 부모 컨트롤에 UINavigationCotroller가있는 경우 모든 viewcontroller를 푸시 할 수 있습니다. –

+0

새 ViewController를 푸시 할 때 상위 클래스의 super.viewDidLoad()가로드되는 것 같습니다. – tika

0

. (적어도 1의 경우) 모달 링크와 nav 컨트롤러가 없습니다!

.pushViewController 또는 간단히 performSegue을 사용할 수 있으며 segue 유형이 push인지 확인하십시오. 나는 performSegue에 가서 각 스위치 케이스에있는 identifier 이름을 바꿀 것입니다.

는 그리고 당신은 여전히 ​​didSelectRow에 performSegue를 호출하는 나아지 prepareForSegue

-1

의 데이터를 전달할 수 있습니다. perpareSegue 메소드에서 작업을 수행하십시오.

+0

이 작업을 수행 할 때의 문제점은 무엇입니까? – coreDeviOS