2012-07-13 4 views
0

저는 iOS 개발에 매우 ​​익숙합니다. 여기에 문제가있어 다른 곳에서는 솔루션을 찾을 수 없습니다. 보기에 내가 원하는 내가 동적으로의 UIViewController의 유형입니다 profileDetailViewController.m에 필드를 생성 할 필요가 xCode는 동적으로 필드를 추가합니다.

,

필드는, 배열과 같습니다에 저장됩니다

Array:(
     { 
     fieldName = Full Name; 
     value = Neil G.; 
    }, 
     { 
     fieldName = Aboutn me; 
     value = "a web dev.."; 
    }, 
     { 
     fieldName = State; 
     value = Colorado; 
    }, 
     { 
     fieldName = City; 
     value = Denver; 
    }, 
     { 
     fieldName = Website; 
     value = "http://google.com"; 
    }, 
     { 
     fieldName = College University; 
     value = "DSU"; 
    }, 
     { 
     fieldName = Graduation Year; 
     value = 2011; 
    } 
) 

난 그냥 오전 처음에는 페이지를 편집 모드로 표시 모드로로드하므로 편집 모드에서는 편집 가능한 필드가있는 양식으로 바뀌어야합니다. 좋은 튜토리얼은 훌륭합니다. 나는 너의 도움에 감사 할 것이다. 고맙습니다.

답변

3

처음 잡아 필드의 배열의 크기 : 모든 우리는 당신이 당신이 할 수있는 것보다 더 많은 필드를 알고 있기 때문에

int fieldCount = [Array count];

다음, 우리가 스크롤 뷰를 배치하는 wrapperView를 만들 화면!

이제 여기에 몇 가지 레이블을 추가하겠습니다. 버튼을 만들거나 쉽게 만들 수 있습니다. 저는 그들 사이에 10 픽셀의 공간이있는 21 높이가 될 것입니다.

그래서 지금 우리는

double heightNeeded = 0; 
heightNeeded = fieldCount * 31; 
if(heightNeeded < scrollView.frame.size.height){ 
    heightNeeded = scrollView.frame.size.height; 
} 

이제 우리는 콘텐츠의 크기가 될 필요가 얼마나 크게있는 ScrollView 말해, 다음 모든 레이블을 추가 할 수는있는 ScrollView의 contentSize를 설정해야합니다. fieldName과 Value가있는 Details라는 객체로 채워져 있다고 가정합니다. 왜냐하면 실제로 지정하지 않았기 때문입니다.

[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,heightNeeded)]; 
int currentY = 0; 
for(Details *thisDetail in Array){ 
    UILabel *thisLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,currentY,scrollView.frame.size.width,21)]; 
    [thisLabel setLineBreakMode:UILineBreakModeWordWrap]; 
    thisLabel.numberOfLines = 0; 
    UILabel.text = [NSString stringWithFormat:@"%@: %@",thisDetail.fieldName,thisDetail.Value]; 
    [thisLabel sizeToFit]; 
    [scrollView addSubView thisLabel]; 
    currentY = currentY + thisLabel.frame.origin.y + thisLabel.frame.size.height + 10; 
} 

라벨이 이와 같이 표시되기를 원하는지 확실하지 않지만 쉽게 변경할 수 있습니다. UIScrollViewDelegate를 구현 한 다음 어딘가에 scrollView.delegate = self을 구현하는 것과 같은 몇 가지 사항이있을 수 있지만 확실하지 않습니다. 희망이 도움이!

+0

덕분에 내가 편집을 디스플레이에서 전환 필드를 만들려고 노력하고, 솔루션 완벽 .. 두 번째 일을했다, user1458968, 그래서 편집 버튼은 직접이 .. 그냥 아이폰 연락처처럼 .. 형태로 작업을해야 누르면 방법이 아니면 그냥 레이블 대신 textFields를 추가해야합니다. 다시 감사합니다 .. – locateneil24

+0

그래, 나는 UITextFields 대신에'userInteractionEnabled' 또는 그게 무엇이든간에 토글 할 것입니다. 그들은 그것이 명백 확실하지, 편집 할 수 없을 때 회색 또는 무언가에 배경 색상을 변경하는 것이 좋습니다 내가 엑스 코드 내 컴퓨터 앞에 아니에요 지금 – jacerate

+0

은 내가 잘못, 또는 u는 계산에 의해 'heightNeeded'받을 수있다 'fieldCount * 31'? 따라서 31 개의 fieldCount-times를 추가 할 때 for 루프가 필요하지 않습니다. –

관련 문제