在我的 TableViewController 中,我使用的是自定义单元格。我正在展示一些关于这些公司的数据。公司名称默认为蓝色,我正在检查公司是否没有有效的 url,因此我可以将其涂成黑色。当然,我添加了一个逻辑,如果公司没有有效的 Url,则禁止打开公司网站。
但是,每次显示此表视图时,都会有几家具有有效 url 的公司的标题被涂成黑色。
因此,我使用相同的逻辑为 safari 中的标题和打开 url 着色,但着色不能正常工作,而在 safari 中打开则可以。
有什么想法吗?
这是我的 cellForRowAtIndexPath 函数
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StandardSearchResultCell";
ResultsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
Data *theData = [Data getInstance];
Company *theCompany = [theData.results objectAtIndex:indexPath.row];
cell.lblTitle.text = theCompany.DisplayName;
cell.lblDescription.text = theCompany.Description;
cell.lblAddressPt1.text = theCompany.AddressPt1;
cell.lblAddressPt2.text = theCompany.AddressPt2;
cell.lblPhone.text = theCompany.Phone;
cell.lblEmail.text = theCompany.Email;
cell.lblDescription.adjustsFontSizeToFitWidth = false;
cell.lblDescription.lineBreakMode = UILineBreakModeWordWrap;
cell.lblDescription.numberOfLines = 0;
[cell.lblDescription sizeToFit];
NSURL *candidateURL = [NSURL URLWithString:theCompany.Url];
NSLog(@"%@", candidateURL);
if (!(candidateURL && candidateURL.scheme && candidateURL.host)) {
cell.lblTitle.textColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
}
return cell;
}
这是 didSelectRowAtIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Company *company = [[Data getInstance].results objectAtIndex:indexPath.row];
NSURL *candidateURL = [NSURL URLWithString:company.Url];
if (candidateURL && candidateURL.scheme && candidateURL.host) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:company.Url]];
}
}