我正在尝试从单元格中获取URL。要做到这一点,我使用NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
,然后想做一些像NSURL * url = self.finalURL [indexPath.row],但因为indexPath.row
仅适用于数组,这不起作用。有没有办法实现与indexPath.row
相同的功能,但对于不在数组中的对象。
以下是我保存网址的方法:
cell.finalURL = self.finalURL;
答案 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代码一起设置数组本身会产生以下结果:
当用户点击某个单元格时,您可以访问该数组中的网址并使用它执行某些内容,如下所示:
- (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中检索数据并使用它来执行您需要的操作。希望有所帮助!