ios - 未传递的值在目标 View Controller 中显示为 (null)

标签 ios parameter-passing segue

我已经搞砸了两个小时,所以我想是时候问了,我之前已经在两个 View 之间传递了很多次数据,但这是我第一次遇到问题。

这是我的源代码 View 代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    TRTranslation *translation = [discussionsArray objectAtIndex:indexPath.row];
    selectedDiscussionID = translation.discussionID;
    [self performSegueWithIdentifier:@"communityToDetails" sender:self];   
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"communityToDetails"])
    {
        TRDiscussionDetailsViewController *ddvc = [[TRDiscussionDetailsViewController alloc] init];
        ddvc.discussionID = selectedDiscussionID;
        NSLog(@" discussion id %@", ddvc.discussionID);   
    }
}

当我在这里记录它时,它具有适当的值(value)。

这是我的目标 VC 的 .h
#import <UIKit/UIKit.h>

@interface TRDiscussionDetailsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (strong, nonatomic) NSString *discussionID;


@end

当我在 viewDidLoad: 中记录讨论 ID 值时,它显示为空。

最佳答案

如果 Discussion Details ViewController 是您的目标 View Controller ,则需要使其远离 segue 而不是重新实例化它。我认为你应该这样做:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender    
{ 
    if ([segue.identifier isEqualToString:@"communityToDetails"]) {

        TRDiscussionDetailsViewController *ddvc = (TRDiscussionDetailsViewController*)segue.destinationViewController;

        ddvc.discussionID = selectedDiscussionID;
        NSLog(@" discussion id %@", ddvc.discussionID);



    }
}
希望能帮助到你

关于ios - 未传递的值在目标 View Controller 中显示为 (null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867922/

相关文章:

powershell - 如何在参数化函数中使用喷溅?

IOS 从标签栏项目执行 segue

swift - Segue 将标题重置为原始 SWIFT

ios - AVCapturesession - 捕获视频、麦克风和背景音频

ios - 如何使用 NSXMLParser 解析来自网站的数据

ios - 哪些 Actionscript 功能在 iOS 上不起作用?

swift - 如何检测 View Controller 是否被解雇

iphone - iPhone 上未收到服务器响应

c++ - 将类的所有变量传递给函数

python-2.7 - 使用 .bind 时如何传递参数?