2014-02-19 2 views
0

관련 답변을 반복적으로 검색했지만 관련 항목을 찾지 못했거나 이해하지 못했습니다. 몇 가지 사실 :didSelectRowAtIndexPath + performSegueWithIdentifier + 모달 segue = 자막을 서브 뷰로 추가 할 수 없음

1) 저는 매우 새로운 것입니다.
2) iOS 7 iPad를 타겟팅하는 Xcode 5 &을 사용 중입니다.
3) 내가 할 수없는 사람이 작성한 큰 기존 응용 프로그램에 1 개의 기능 (예 : 죽음의 키스)을 추가하려고합니다. 연락처

앱에는 테이블 뷰 (& 원래 분할보기와 관련된 전체보기 무리)로 연결되는 탐색 컨트롤러에 연결되는 분할보기 컨트롤러가 있습니다. 사용자가 선택한 테이블 항목에 특정 값이있는 경우 새보기를 열려고합니다 (그렇지 않으면 기존 논리에서 처리하게 함).

테이블보기에서 모달 세구가있는 새로운보기 컨트롤러를 만들었습니다. 나는 didSelectRowAtIndexPath 방법에 테스트를 추가 : 나는 새보기에 정보를 전달하려고 시작할 때까지

if([[object name] isEqualToString:@"SpecialCase"]) { 
    [self performSegueWithIdentifier:@"ScSegue" sender:nil]; 
} 

이 적어도 한 번했다. 그 이후로 추가되었습니다 :

if ([[segue identifier] isEqualToString:@"ScSegue"]) { 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    CBPeripheral *object = _objects[indexPath.row]; 
    [[segue destinationViewController] setDetailItem:object]; 
} 

새로운보기 컨트롤러에 setDetailItem()에 필요한 def/decl을 추가했습니다. 나가 그것을하고있는 동안 무언가를 끊는 지 나는 모르지만, 나가 이것 전부를 역행하더라도, 나가 segue 외침을 첫째로 추가 할 때 나가 있던 곳에, 나는 아직도 "자기를 subview로"추가 할 수 없다 얻는다. 네, 그 사이에 깨끗이 했어요.

나는 이것을 시도하기에는 너무나 무식하다는 것을 알고 있지만, 그것을하는 것이 나의 일이다. 나는 성공의 단서를 찾기 위해 하루의 대부분을 보냈으므로 나는 snarkfest 전에 나 자신을 멸시하고있다. 어떤 도움이라도 감사하게 생각합니다. didSelectRowAtIndexPath에서

+1

안녕하세요 @GerryO, 코드에 중단 점을 넣고 단계별 디버깅 단계를 수행하고 어떤 줄에서 예외가 발생하는지 알려주십시오. –

+0

안녕하세요 & 감사합니다. 나는 그것을 포함해야했다. 이 줄을 실행하면 오류가 발생합니다. [self performSegueWithIdentifier : @ "ScSegue"sender : nil]; – GerryO

답변

2

: prepareForSegue에서

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     [self performSegueWithIdentifier:@"ShowDetail" sender:tableView]; 
    } 

:이 신속 들어있는 NSString

+0

응답 해 주셔서 감사합니다. 그러나 Xcode는 이에 만족하지 않습니다. 그런 멍청이가되어서 미안하지만 SiteMap은 무엇입니까? 나는 이것에 대한 참조를 어디에서도 발견 할 수 없다. 또한 "Detail"을 사용한 곳에서 실제 디테일 뷰 컨트롤러의 이름으로 대체해야한다고 생각하십니까? 또는 내가 찾을 수없는 또 다른 키워드는 어디에서나 설명되어 있습니다 (지금까지 보았습니다)? 다시 한번 귀하의 도움은 매우 감사합니다! – GerryO

+0

당신은 나를 미안하게 이스케이프 처리하지 않아도됩니다. 예 자세히보기 컨트롤러입니다. – hypuerta

3

을 당신의 "다음 뷰"이름 세부임을 의미와 유형의 속성이라는 문자열을 가지고

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ShowDetail"]) 
    { 
     NSIndexPath *indexPath = nil; 
     indexPath = [self.table indexPathForSelectedRow]; 
     SiteMap *site; 
     site = [self.listSite objectAtIndex:indexPath.row]; 
     Detail *detailController = (Detail*)segue.destinationViewController; 
     detailController.string = @"hello"; 
    } 
} 

:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("showItemDetail", sender: tableView) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if segue.identifier == "showItemDetail" { 
     let indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()! 
     let detailVC:ItemDetailViewController = segue.destinationViewController as ItemDetailViewController 
     detailVC.item = items[indexPath.row] as Item 

    } 
} 
관련 문제