如何动态添加UIView

时间:2012-01-12 18:17:46

标签: iphone objective-c ios layout user-interface

您好我想要一张UILabel的表格。第一列是项目的名称,第二列是该项目的值。问题是我不知道在用户登录之前我需要多少行。我知道如何在Android中向表中添加行,但似乎无法使用iPhone。我怎么做到这一点?

View

4 个答案:

答案 0 :(得分:3)

考虑将UITableView与自定义单元格一起使用。

优点是,根据您的数据源,表视图可以在数据更改时自动更新。事件驱动的体系结构(即:数据可用/更改时的更新表)与objective-c land一致。

有关自定义单元格的示例:http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

有关制作由数据源支持的UITableView的教程,我将向您介绍优秀的Stanford iOS编程课程,可在iTunes U上找到。

答案 1 :(得分:1)

对于这些目标,有一个名为UITableView的视图。阅读这篇文章:

Table View Programming Guide for iOS

UITableView Class Reference

答案 2 :(得分:0)

您需要实现UITableViewDataSource协议。在这种情况下,协议的一种方法是:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [myData count];
}

您可以在此处查看整个协议文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html

答案 3 :(得分:0)

你可以用两种不同的方式来做。

在第一个中,您可以以编程方式创建标签。标签(UILabel类)继承自UIView。因此,如果您有超级视图,则可以根据用户登录信息在其上添加标签。您必须使用frame属性来定位标签。例如:

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 40, 300, 50)];
titlelabel.text = @"title";
[ySursuperview addSubview:titleLabel];
[titleLabel release];

// add labels here

在第二种情况下,您可以使用UITableView(包含标题的标题视图)和每个UITableViewCell包含NameX和ValueX的位置。您也可以使用自定义UITableViewCell

在我看来,第二种解决方案可能更优雅,更易于维护。相反,第一个更快,但你必须做一些计算才能获得你想要的网格布局。