使用indexPath.row之类的东西从单元格获取URL

时间:2014-01-16 01:17:43

标签: uitableview url

我正在尝试从单元格中获取URL。要做到这一点,我使用NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];,然后想做一些像NSURL * url = self.finalURL [indexPath.row],但因为indexPath.row仅适用于数组,这不起作用。有没有办法实现与indexPath.row相同的功能,但对于不在数组中的对象。

以下是我保存网址的方法:

cell.finalURL = self.finalURL;

1 个答案:

答案 0 :(得分:1)

除非您创建单元格的子类并将该属性添加到is,否则单元格不具有 URL。通常,您将拥有一组对象,字符串,字典等,这就是您的tableView的数据源

如果我有一个包含三个NSURL的数组,名为myArray,包含google,amazon和bing,我想显示三个单元格,各个标签与数组中的项目匹配,我将实现以下代码: / p>

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // we only want a single section for this example
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // this tells the tableView that you will have as many cells as you have items in the myArray array
    return myArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // first we try to reuse a cell (if you don't understand this google it, there's a million resources)
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    // if we were unable to reuse a cell
    if (cell == nil) {
        // we want to create one
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

        // here is where we do ANY code that is generic to every cell, such as setting the font,
        // text color, etc...
        cell.textLabel.textColor = [UIColor redColor];
    }

    // here is where we do ANY code that is unique to each cell - traits that are based on your data source
    // that you want to be different for each cell

    // first get the URL object associated with this row
    NSURL *URL = myArray[indexPath.row];

    // then set the text label's text to the string value of the URL
    cell.textLabel.text = [URL absoluteString];

    // now return this freshly customized cell
    return cell;
}

与其他默认tableview代码一起设置数组本身会产生以下结果:

enter image description here

当用户点击某个单元格时,您可以访问该数组中的网址并使用它执行某些内容,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // first deselect the row so it doesn't stay highlighted
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    // get the URL associated with this cell by using indexPath.row as an index on your
    // data source array, if you tapped the first cell, it will give you back the first URL in your array...
    NSURL *selectedURL = myArray[indexPath.row];

    // do something with that URL here...
}

将您的表视图的数据源视为一堆小盒子。您可以通过百万种不同的方式创建数据源,但是一旦拥有它,您基本上就可以将这些项目放在编号的cubbies中。你的表格视图根据这些小房间中的内容创建自己,所以要在第一个小房间中创建它看起来的第一个单元格,依此类推,稍后当用户从该tableview中选择一个单元格时,所有的表视图都会告诉你选择的cubbie数字,您的工作就是使用该信息从特定的Cubbie中检索数据并使用它来执行您需要的操作。希望有所帮助!