我是iOS开发的新手,我在这里遇到问题,无法在其他任何地方找到解决方案。
我需要在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中的联系人, 最初使用编辑按钮将页面加载为显示模式,因此在编辑模式时,它应变为具有可编辑字段的表单。任何好的教程都会很棒。我将感谢你的帮助。谢谢。
答案 0 :(得分: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个像素的空间。
所以现在我们需要设置scrollView的contentSize
,
double heightNeeded = 0;
heightNeeded = fieldCount * 31;
if(heightNeeded < scrollView.frame.size.height){
heightNeeded = scrollView.frame.size.height;
}
现在我们可以告诉scrollView它需要多大的内容大小,然后添加所有标签。我将假设您的数组中填充了名为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然后scrollView.delegate = self
,但我不确定。希望这有帮助!