【问题标题】:prepareForSegue after didSelectRowAtIndexPath?在 didSelectRowAtIndexPath 之后 prepareForSegue?
【发布时间】:2014-06-09 20:14:40
【问题描述】:

我们可以在 didSelectRowAtIndexPath 之后进行类似 prepareForSegue 的排名吗?

我的 NSLog 发送了一个好句子,这个 NSLog 是我想要的(在 didSelectRowAtIndexPath 中,但在 prepareForSegue 中分配给我的 NSLog 之后)我希望 prepareForSegue 中的 NSLog 发送与 didSelectRowAtIndexPath 相同的句子。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    self.cellSelected = cell.textLabel.text;
        NSLog(@"la : %@", self.cellSelected);
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showPhotoView"]) {
        NSLog(@"ou %@", self.cellSelected);

        PhotoViewController *viewController = (PhotoViewController *)segue.destinationViewController;
        viewController.cellSelected = self.cellSelected;

    }
}

【问题讨论】:

  • 有什么问题?
  • @MatthiasBauch 问题是我不能传递“cell.textLabel.text;”的值的 didSelectRowAtIndexPath 因为在更改视图后传递给 cellSelected...:/
  • 我明白了,问题是prepareForSegue:sender:tableView:didSelectRowAtIndexPath:之前被调用

标签: objective-c didselectrowatindexpath


【解决方案1】:

如果您使用源自 UITableViewCell 的 segue,sender 参数实际上将包含所选的 UITableViewCell。所以你可以只使用 sender 参数来获取你需要的数据。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showPhotoView"]) {
        UITableViewCell *cell = sender;

        PhotoViewController *viewController = (PhotoViewController *)segue.destinationViewController;
        viewController.cellSelected = cell;
    }
}

【讨论】:

    【解决方案2】:

    是的,你可以!你只需要解决一些问题

    这是我使用的一个例子

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
    [self performSegueWithIdentifier:@"friends2" sender:self];
    
    
    
    }
    
    
    
    - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    
    if ([[segue identifier] isEqualToString:@"friends2"]) {
    
    NSString * object = nil;
       NSIndexPath *indexPath2 = nil;
    
    if (self.searchDisplayController.isActive) {
        indexPath2 = [[ self.searchDisplayController searchResultsTableView]indexPathForSelectedRow];
        object = self.results[indexPath2.row];
        NSLog(@"is active : %@", object.self);
    } else
    {
        indexPath2 = [self.tableView indexPathForSelectedRow];
        object = sortedArray.self[indexPath2.row];
         NSLog(@"is not active : %@", object.self);
    }
    

    用 didSelect.. 我刚刚做了 segue,用 performSegue 你做你想做的事

    【讨论】:

    • 没错!但是现在我遇到了另一个问题:嵌套推送动画会导致导航栏损坏。在意外状态下完成导航转换。导航栏子视图树可能已损坏。
    猜你喜欢
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多