gpt4 book ai didi

iphone - 子类 UITableViewCell 中的 UIProgressview 需要在其他 UIViewController 中使用

转载 作者:行者123 更新时间:2023-12-01 16:50:44 25 4
gpt4 key购买 nike

我有一个子类自定义 UITableViewCell ,我在其中插入一个进度 View 。

方法如下:

-(void)layoutSubviews {
applicationDelegate = [[UIApplication sharedApplication] delegate];
[super layoutSubviews];
self.imageView.frame = CGRectMake(0, 0, self.frame.size.height, self.frame.size.height);

self.textLabel.frame = CGRectMake( self.imageView.frame.size.width + 20, self.textLabel.frame.origin.y, self.textLabel.frame.size.width, self.textLabel.frame.size.height);
progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
progressView.frame = CGRectMake(self.textLabel.frame.origin.x, 50, 150, 100);
progressView.progress = 0.0f;
progressView.trackTintColor = [UIColor clearColor];
progressView.progressTintColor = [UIColor redColor];
progressView.tag = 101;
[progressView setHidden:YES];
[self.contentView addSubview:progressView];
}

现在,当在其他 View Controller 中我只想在第一个单元格中显示这些元素时,我试图将这些元素隐藏在其他单元格中。这是我在 cellForRowAtIndexPath: 中尝试执行此操作的方法方法:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString * cellIdentifier = @"cellId";

CustomCell * cell = [self.tableview dequeueReusableHeaderFooterViewWithIdentifier:cellIdentifier];

if (cell == Nil) {

cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}

if (indexPath.row == 0) {

imageData = UIImageJPEGRepresentation(cell.imageView.image, 100);
filename = cell.textLabel.text;

[(UIProgressView*)[cell.contentView viewWithTag:101] setHidden:NO];<==Not Working
}

return cell;
}

如何在我的 ViewController 的自定义 UITableView 子类中使用这个 UIElements?
我没有使用 xib 文件,一切都是以编程方式完成的。我已经在这附近玩了一整天了,有人知道吗?

最佳答案

如果只有第一行需要显示进度 View ,为什么不只为行 0 使用自定义单元格?然后使用标准 UITableViewCell对于行 >1 ?

我还建议添加 progressViewself.contentViewinit方法而不是 layoutSubviews . layoutSubviews旨在定位您已经拥有的 View (而不是添加新 View ),因为它可以在单元格的生命周期内多次调用。

我会在自定义单元格中添加一个 BOOL 属性,以确定是否应该显示进度指示器(并在设置为 NO 时将其删除)。在 cellForRowAtIndexPath: 中,您可以为给定的行适本地设置它。

CustomCell.h :

@property(nonatomic, assign) BOOL shouldShowProgressView;

CustomCell.m :
- (void)setShouldShowProgressView:shouldShowProgressView {
_shouldShowProgressView = shouldShowProgressView;

if (shouldShowProgressView) {
if (self.someProgressView == nil) {
// add your progress view from scratch
}

[self.contentView addSubview:self.someProgressView];

} else {
[self.someProgressView removeFromSuperview];
}
}

在您的表 Controller 中:
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *cellIdentifier = @"cellId";
CustomCell *cell = [self.tableview dequeueReusableHeaderFooterViewWithIdentifier:cellIdentifier];

if (cell == Nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}

if (indexPath.row == 0) {
cell.shouldShowProgressView = YES;

} else {
cell.shouldShowProgressView = NO;
}

return cell;
}

关于iphone - 子类 UITableViewCell 中的 UIProgressview 需要在其他 UIViewController 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104777/

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