2013-05-09 6 views
1

이 문제는 완전히 해결되지 않았습니다. 나는 storyboards로 작업 해왔고, 나는 tableviews와 몇 가지 물건들로 내비게이션 컨트롤러를 만들었다. tableview의 각 행에 Services이 있으며 각 서비스에 대해 하나의 세부 정보보기를 만들어야합니다.스토리 보드 및 프로그램 뷰

많은 서비스가 있으므로 스토리 보드에 만들 수 없습니다. 아이디어는 Services을 웹 서비스 (매개 변수 수, 각 유형의 수 등)에서 다운로드하고 Service에 적절한 텍스트 필드/버튼으로 추가하는 것입니다.

그래서, 내 문제와 질문은 다음과 같습니다

1) 나는 스토리 보드 및 뷰 프로그래밍 결합 할 수 있습니까? MyTableviewClassNewView을 만들 때 내 prepareforsegue 방법으로해야합니까? 내 탐색 컨트롤러를 잃어 버리지 않으면 어떻게 화면에 표시 할 수 있습니까? 이것은 내가 무엇을 가지고 (이 작동하지 않습니다 거기 이름이 '서비스 1'아무 SEGUE 없다는 것을 나에게 말한다) : 환영

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

if ([[segue identifier] isEqualToString:@"NextLevel"]) { 
    [segue.destinationViewController setActualNodo:[actualNodo getSonAtIndex:indexPath.row]]; 
} else if ([[segue identifier] isEqualToString:@"Service1"]) { 
    CGRect bounds = self.view.bounds; 
    UIView *myview = [[UIView alloc] initWithFrame:bounds]; 
    [myview setBackgroundColor: [UIColor redColor]]; 
    [self.view addSubview:myview]; 
    [self.view bringSubviewToFront:myview]; } 

어떤 책 또는 참조하지만 난 아무것도 비슷한 찾을 수 없습니다. 이것은 iOS에서 매우 복잡한가요? 자바에서도 비슷한 일을했다. 나는 XIBs와 동적으로 인터페이스를 생성하는 것에 대해 읽었지만, 진심으로 나는 그것이 무엇인지 모른다. .. 고마워.

답변

2

예보기로 StoryBoard을 만들고 프로그래밍 방식으로보기를 추가 할 수 있습니다.

prepareForSegue 방법으로보기를 만들면 안됩니다. 이것은 실제로 객체를 다른 객체로 전달할 때 사용되어야합니다 ViewController.

나는 이것을 제안합니다. StoryBoard으로 돌아가서 새로운 UIViewController 장면을 만듭니다. 첫 번째 장면을 클릭하고 CTRL 새 장면으로 드래그하십시오. 다음으로, segue를 클릭하고 이름을 지정하십시오.

1 단계 :

ServicesViewController라는 새로운 클래스를 만들고이를 UIViewController에`의 서브 클래스의 확인 :

**enter image description here**

2 단계 :

이동 StoryBoard으로 돌아가서 장면을 클릭하십시오. 그것이 선택되도록. 다음으로 Files Owner을 클릭하고 마지막으로 클래스 정보 버튼 (세 번째 버튼)을 클릭하고 마지막으로 방금 만든 ServiceViewController 클래스를 선택하십시오.

enter image description here

3 단계 : 위로 ServicesViewController에서 didSelectRowAtIndex 방법

당신의 seque 전화 : 지금은

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

당신의 prepareForSegue 방법에있는 모든 코드를 청소 먼저 전환을 가져 오십시오.

+0

처음에는 답변 해 주셔서 감사합니다. 그래서, 내 스토리 보드에 새로운 ViewController (비어 있음)를 만들고이를 내 'ServiceView'클래스에 연결하고 프로그래밍 방식으로 ViewDidLoad에서 인터페이스를 생성 할 수 있습니까? – Sergiodiaz53

+0

내 대답이 더 자세하게 업데이트되었습니다. 이것이 당신에게 더 많은 도움이되기를 바랍니다. 장면의 UImageView를 무시하십시오. 내 프로젝트의 UImageView입니다. 사용자의 빈 흰색보기 여야합니다. – Flea

+0

UIButton 프레스에서 프로그래밍 방식으로 버튼을 스토리 보드보기로 추가하는 방법은 어떻습니까? –

1

마치 tableView에 여러 개의 셀이있는 것 같습니다. 하위 태그를 사용하는 대신 다른 식별자를 사용하여 다른 셀을 만들고 서비스 배열에서 발견 된 서비스가 웹 서비스에서 채워지는 것을 기반으로 표시하거나 숨길 수 있습니다.

+0

도움을 주셔서 감사합니다, MarkM,하지만 내 문제는 어떻게하면 동적으로 인터페이스를 생성 할 수 있습니다. 어쨌든 나는 상위 대답을 계속 일할 수 있다고 생각한다. – Sergiodiaz53

2

벼룩의 답변 외에도 네비게이션 컨트롤러를 유지해야하는 경우 테이블보기 컨트롤러의 파일 소유자 아이콘 (보기 컨트롤러보기 아래의 노란색 상자)에서 끌어서 스토리 보드에 밀어 넣기 단절을 만들면됩니다 스토리 보드에 추가 한 ServiceViewController에 segue의 유형으로 "push"를 선택할 수있는 팝업 창이 나타납니다. 그런 다음 세그를 선택하고 속성 검사기 (네 번째 버튼, 스냅 샷의 옆에있는 네 번째 버튼)에서 "식별자"텍스트 필드에 섹터의 고유 식별자 (예 : serviceSegue)를 입력하십시오.

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

그리고 당신이 게시 코드에서

:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

    if ([[segue identifier] isEqualToString:@"serviceSegue"]) 
     [segue.destinationViewController setActualNodo:[actualNodo getSonAtIndex:indexPath.row]]; 
} 

난 당신이 다른 SEGUE으로 뭘 하려는지 모르겠어요 "서비스 1 벼룩의 코드를 사용하여이 시점에서

, "하지만 TableViewController의 뷰를 변경하려는 경우 Segues가이를 수행하는 방법이 아닙니다. 선택한 행에 따라 didSelectRowAtIndexPath 방법으로 그것을해야 어떤 경우

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (You want to transition to other view controller) 
     [self performSegueWithIdentifier:@"serviceSegue" sender:nil]; 
    else 
     Change your view here. 
} 

을 나는 희망이 도움이!