【问题标题】:insert row text into variable将行文本插入变量
【发布时间】:2010-11-10 17:54:39
【问题描述】:
NSString *stalklabel = ;

NSURL *url = [NSURL URLWithString:@"http://news.search.yahoo.com/rss?ei=UTF-8&p=%@&fr=news-us-ss", stalklabel];

我有上面的代码,我需要知道如何获取用户在stalklabel 中按下的行的值。我使用 Core Data 来填表;这会使事情复杂化吗?

编辑:

对不起;澄清:

我在 view1 中有这个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [[self appDelegate] setCurrentlySelectedBlogItem:[[[self rssParser]rssItems]objectAtIndex:indexPath.row]];
    //[self.appDelegate loadNewsDetails];

    NewsDetailViewController *newsDetail = [[NewsDetailViewController alloc] initWithNibName:@"NewsDetailViewController" bundle:nil];
    //NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
    // ...
    // Pass the selected object to the new view controller.
    //newsDetail.titleTextView.text = [[[self appDelegate] currentlySelectedBlogItem]title];
    //newsDetail.descriptionTextView.text = [[[self appDelegate] currentlySelectedBlogItem]description];
    [self.navigationController pushViewController:newsDetail animated:YES];
    [newsDetail release];   
}

所以当用户按下行并被发送到 view2 时,view2 使用另一个类来填充视图。我的带有 URL 的原始代码位于另一个类中。所以我需要将行文本值传输到另一个类中的变量并将其插入到 URL 中,以便我可以用相关数据填充 view2;这有意义吗?

【问题讨论】:

  • 嗯,好像雅各布和我对你的问题的理解完全不同。您能否澄清一下,如果您需要了解 NSString 操作或 UITableViewCells 的映射以及它们所代表的数据?

标签: iphone objective-c uitableview core-data


【解决方案1】:

如果一个单元格被选中,它的 tabelView 将调用它的委托方法tableView:didSelectRowAtIndexPath:

你得到了 indexPath。如果你使用fetchedResultsController(你应该使用CoreData),你可以简单地做

YourClass *object = (YourClass *)[[self fetchedResultsController] objectAtIndexPath:indexPath];
NSString *aString = object.text;

CoreDataBooks example code

编辑
关于您的代码,您似乎有一个“Super-AppDelegate”。那是不需要的。

你的 NewsDetailViewController 应该有一个指向对象的属性。喜欢news

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{

    NewsDetailViewController *newsDetail = [[NewsDetailViewController alloc] initWithNibName:@"NewsDetailViewController" bundle:nil];
    NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
    newsDetail.news = selectedObject;  
    [self.navigationController pushViewController:newsDetail animated:YES];
    [newsDetail release];    
}

在 NewsDetailViewController 的 -viewDidLoad: 中,您可以使用来自新闻对象的数据设置视图。

【讨论】:

  • RssFunViewController *object = (RssFunViewController *)[[self fetchedResultsController] objectAtIndexPath:indexPath]; NSString *aString = object.text; rssParser.stalklabel.text = aString;
  • 以上方法不起作用的任何原因? rssParser 是指向包含 URL 内容的类的指针
  • 从名字 RssFunViewController 我建议,它不是 NSManagedObject 或它的一个血统。 NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];看起来不错
  • 谢谢,RssFunViewController 是我正在使用的类。我用您编辑的行替换了该行,我收到了很多这样的错误:“请求成员'文本'在不是结构或联合的东西中”
【解决方案2】:

使用stringWithFormat:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://news.search.yahoo.com/rss?ei=UTF-8&p=%@&fr=news-us-ss", stalklabel]];

【讨论】:

  • stringWithFormat: 不需要 nil 哨兵。 :)
  • @Dave,真的。我已经习惯了使用它,所以我还是把它卡在那里了。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2014-02-26
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多