网址检查无法正常运行

时间:2012-09-11 20:06:13

标签: iphone objective-c ios uitableview

在我的TableViewController中,我正在使用自定义单元格。我正在显示一些有关这些公司的数据。公司标题默认为蓝色,我正在检查公司是否没有有效的网址,因此我可以将其涂成黑色。当然,如果公司没有有效的Url,我会添加一个禁止开放公司网站的逻辑。

但是,每次显示此表格视图时,都有几家公司的有效网址被标记为黑色。

所以,我在safari中使用相同的逻辑着色标题和打开网址,但着色不能正常工作,并且在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]];
    }
}

1 个答案:

答案 0 :(得分:4)

您需要始终显式设置cell.lblTitle.textColor,因为您可能会使带有黑色标签的单元格出列。所以添加一个else子句并确保你总是将cell.lblTitle.textColor设置为某个值:

if (!(candidateURL && candidateURL.scheme && candidateURL.host)) { 
   cell.lblTitle.textColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; 
else
   cell.lblTitle.textColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:1];