0

こんにちは私はiOSプログラミングに不慣れで、少し助けが必要です。

.plistファイルのデータが入力されたテーブルビューセルがあります。セルの1つにリンクを作成できる必要があります。どうすればこれを行うことができますか?

データをセルにロードしているコードは次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomTableCell";
    static NSString *CellNib = @"DetailViewCell";



    DetailViewCell *cell = (DetailViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
        cell = (DetailViewCell *)[nib objectAtIndex:0];
    }   

    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.cellTitleLabel.textColor = [UIColor blackColor];
    cell.cellTitleLabel.font = [UIFont systemFontOfSize:20.0];
    cell.cellSubtitleLabel.textColor = [UIColor darkGrayColor];

    informations = [[NSArray alloc] initWithObjects:@"City", @"Country", @"State", @"History", @"Link", nil];
    subtitles = [[NSArray alloc] initWithObjects:titleString, subtitleString, stateString, populationString, @"Link", nil];


    cell.cellTitleLabel.text = [informations objectAtIndex:indexPath.row];
    cell.cellSubtitleLabel.text = [subtitles objectAtIndex:indexPath.row];

    return (DetailViewCell *) cell; 
}

セル「リンク」の場合、.plistファイルに保存されているURLを開くために必要です。どうすればこれを行うことができますか?

どうもありがとう

ライアン

PS:私はこのようなものの初心者なので、説明してください。ありがとう

4

2 に答える 2

1

何よりもまず、以下をviewDidLoadに移動します

   informations = [[NSArray alloc] initWithObjects:@"City", @"Country", @"State", @"History", @"Link", nil];
    subtitles = [[NSArray alloc] initWithObjects:titleString, subtitleString, stateString, populationString, @"Link", nil];

次に、@"Link"の値を持つセルの場合

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    DetailViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if(cell.cellTitleLabel.text == @"Link")
    {
          //Open in safari
          [[UIApplication sharedApplication] openURL:[NSURL URLWithString:cell.cellSubtitleLabel.text]];
    }
}
于 2012-06-08T10:36:34.053 に答える
1

viewControllerの2つの配列プロパティを作成します。

@property (nonatomic, retain) NSArray *informationArray, *subtitlesArray;

-viewDidLoadメソッドでそれらを初期化します。

   self.informationArray = [NSArray arrayWithObjects:@"City", @"Country", @"State", @"History", @"Link", nil];
   self.subtitlesArray = [NSArray arrayWithObjects:titleString, subtitleString, stateString, populationString, @"Link", nil];

次に、取得したデータがリンクであるかどうかを確認し、Safariで開きます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    id title = [self.informationArray objectAtIndex:indexPath.row];

    NSURL *link = [NSURL URLWithString:[self.subtitlesArray objectAtIndex:indexPath.row]];

    //or to get the link out of a .plist

    NSDictionary *plist = [NSData dataWithContentsOfFile:filePathForPlist];

    NSURL *link = [NSURL URLWithString:[[plist objectForKey:title] objectForKey:@"Link"];

    // you may need to get a different object from the .plist depending on the structure of the file.

    //Check to see if the indexPath matches a cell with a title of "Link" and that the URL can be opened.

    if([title isEqualToString:@"Link"] && [[UIApplication sharedApplication] canOpenURL:link]) {

          [[UIApplication sharedApplication] openURL:link];

    }
}
于 2012-06-08T10:44:38.143 に答える