0

私はiOS開発に非常に慣れていないので、ここで問題が発生し、他の場所で解決策を見つけることができません。

UIViewControllerのタイプであるprofileDetailViewController.mにフィールドを動的に生成する必要があります。

表示したいフィールドは、次のような配列に格納されます。

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;
    }
)

私はちょうどそれをiPhoneの連絡先のようにしようとしています。最初は編集ボタン付きの表示モードとしてページをロードするので、編集モードのときに編集可能なフィールドを持つフォームに変わるはずです。どんな良いチュートリアルでも素晴らしいでしょう。よろしくお願いします。ありがとうございました。

4

1 に答える 1

3

まず、フィールドの配列のサイズを取得します。

int fieldCount = [Array count];

次に、wrapperViewを作成します。これは、画面に収まるよりも多くのフィールドがあることがわかっているためです。

UIView *wrapperView = [[UIView alloc] initWithFrame:self.view.frame];
[self.view addSubView:wrapperView];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:wrapperView.frame];
[wrapperView addSubView:scrollView];

ここでは、目的のためにいくつかのラベルを追加しますが、ボタンやその他のラベルを簡単に作成できます。高さは21で、間に10ピクセルのスペースがあります。

contentSizeしたがって、scrollViewのを設定する必要があります。

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

これで、scrollViewにコンテンツサイズをどのくらいの大きさにする必要があるかを伝えてから、すべてのラベルを追加できます。あなたが実際に指定しなかったので、あなたの配列が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ません。お役に立てれば!

于 2012-07-13T15:42:07.230 に答える