【问题标题】:How to dynamically add a UIView如何动态添加 UIView
【发布时间】:2012-02-09 01:00:34
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

考虑使用带有自定义单元格的 UITableView。

优点是,根据您的数据源,表格视图可以在您的数据更改时自动更新。事件驱动架构(即:当数据可用/更改时更新表)符合 Objective-C 领域。

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

有关制作由数据源支持的 UITableView 的教程,我建议您参考 iTunes U 上提供的优秀的斯坦福 iOS 编程课程。

【讨论】:

    【解决方案2】:

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

    Table View Programming Guide for iOS

    UITableView Class Reference

    【讨论】:

      【解决方案3】:

      您需要实现 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

      【讨论】:

        【解决方案4】:

        您可以通过两种不同的方式进行操作。

        在第一个中,您可以以编程方式创建标签。标签(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

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

        【讨论】:

          猜你喜欢
          • 2015-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-09
          • 2011-01-12
          • 2014-05-02
          • 1970-01-01
          相关资源
          最近更新 更多