2012-07-13 102 views
0

我对iOS开发很新,我在这里遇到问题,无法在其他地方找到解决方案。xCode动态添加字段

我需要动态生成的profileDetailViewController.m领域是的UIViewController类型,

场我要上查看存储在阵列它看起来像这样,

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中的联系人, 最初加载页面作为显示模式与编辑按钮,所以当编辑模式它应该变成可编辑字段的形式。任何好的教程都会很棒。我会感谢你的帮助。谢谢。

回答

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]; 

现在我要为此目的添加一些标签,但您可以轻松地制作它们的按钮或您有什么。我会让他们有一个10像素的高度之间的高度。

所以现在我们需要设置了滚动的contentSize

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

现在我们可以告诉它滚动视图内容大小需要多大的空间可以,然后添加的所有标签。我将假设你的数组充满了名为Details的对象,它们有一个fieldName和一个Value,因为你没有真正指定。

[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然后在某个地方执行,但我不确定。希望这可以帮助!

+0

感谢user1458968,你的解决方案是完美的..第二件事,我想让字段从显示切换到可编辑,所以当编辑按钮按下它应该工作的形式..就像iPhone接触..有没有任何直接或者我只需要添加textFields而不是标签。再次感谢.. – locateneil24 2012-07-13 22:32:07

+0

是啊,我会让他们UITextFields,而不是切换'userInteractionEnabled'或任何它被称为。考虑将背景颜色更改为灰色或不可编辑的时候,不确定它是否显而易见,并且我现在不在xCode前的计算机前面 – jacerate 2012-07-13 23:15:50

+0

我错了,还是可以通过计算得到'heightNeeded' 'fieldCount * 31'?所以你不需要for循环来添加31个fieldCount时间。 – 2014-05-15 09:25:08