gpt4 book ai didi

ios - 如何在 Xcode 中创建具有多列的 UI TableView?

转载 作者:可可西里 更新时间:2023-11-01 03:02:24 24 4
gpt4 key购买 nike

我正在使用 Xcode 开发 iOS 8 应用程序。我需要在一个 View 中显示一个包含多列和多行数据的表格。

例子:

Name               Time In       Time Out      ETA
Johnnys Supplies 8:30AM 9:00AM 10:15AM
Franks Company 8:45AM 9:05AM 9:45AM
Another Inc. 10:12AM 11:00AM 12:04PM

所有数据都将使用 JSON/PHP 读取。

我需要它像 tableview 一样工作,用户可以在其中垂直滚动并选择索引。选择该索引后,用户可以单击按钮以根据所选单元格(等)中的数据运行其他查询。

实现这个最简单的方法是什么?必须有一种 xcode 允许您本地执行此操作的方法吗?我错过了什么吗?

欢迎所有编码示例!

我找到了两个选项,但都需要许可费:

http://www.ioscomponents.com/Home/IOSDataGrid <-- 400 美元

http://www.binpress.com/app/ios-data-grid-table-view/586 <-- 130 美元

有人熟悉这些组件吗?

最佳答案

两列和两个相邻的标签有什么区别?分隔线?

enter image description here

这是多 ListView 吗?

因为它是一个带有普通 UITableViewCell 的 tableview,它有 3 个 UILabels 和 2 个 UIViews。 View 假装为 1 px 宽的分隔线。

代码应该是不言自明的。

.h

@interface MultiColumnTableViewCell : UITableViewCell
@property (strong, nonatomic) UILabel *label1;
@property (strong, nonatomic) UILabel *label2;
@property (strong, nonatomic) UILabel *label3;
@end

.m

@interface MultiColumnTableViewCell ()
@property (strong, nonatomic) UIView *divider1;
@property (strong, nonatomic) UIView *divider2;
@end

@implementation MultiColumnTableViewCell

- (UILabel *)label {
UILabel *label = [[UILabel alloc] init];
label.translatesAutoresizingMaskIntoConstraints = NO;
[self.contentView addSubview:label];
return label;
}

- (UIView *)divider {
UIView *view = [[UIView alloc] init];
view.translatesAutoresizingMaskIntoConstraints = NO;
[view addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:1.0/[[UIScreen mainScreen] scale]]];
view.backgroundColor = [UIColor lightGrayColor];
[self.contentView addSubview:view];
return view;
}

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
self.separatorInset = UIEdgeInsetsZero;
self.layoutMargins = UIEdgeInsetsZero;
self.preservesSuperviewLayoutMargins = NO;

self.divider1 = [self divider];
self.divider2 = [self divider];

self.label1 = [self label];
self.label2 = [self label];
self.label3 = [self label];

NSDictionary *views = NSDictionaryOfVariableBindings(_label1, _label2, _label3, _divider1, _divider2);

NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[_label1]-2-[_divider1]-2-[_label2(==_label1)]-2-[_divider2]-2-[_label3(==_label1)]-5-|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views];
[self.contentView addConstraints:constraints];

NSArray *horizontalConstraints1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_divider1]|" options:0 metrics:nil views:views];
[self.contentView addConstraints:horizontalConstraints1];
NSArray *horizontalConstraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_divider2]|" options:0 metrics:nil views:views];
[self.contentView addConstraints:horizontalConstraints2];

return self;
}

@end

表格 View Controller :

@implementation MasterViewController

- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerClass:[MultiColumnTableViewCell class] forCellReuseIdentifier:@"Cell"];
self.tableView.separatorColor = [UIColor lightGrayColor];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MultiColumnTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.label1.text = [NSString stringWithFormat:@"Name %ld", (long)indexPath.row];
cell.label2.text = [NSString stringWithFormat:@"Start %ld", (long)indexPath.row];
cell.label3.text = [NSString stringWithFormat:@"End %ld", (long)indexPath.row];
return cell;
}

@end

关于ios - 如何在 Xcode 中创建具有多列的 UI TableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com