首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >值在目标视图控制器中显示为(null)。

值在目标视图控制器中显示为(null)。
EN

Stack Overflow用户
提问于 2014-04-04 16:15:26
回答 3查看 410关注 0票数 1

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

下面是我的源代码视图代码:

代码语言:javascript
运行
复制
-(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);   
    }
}

当我在这里记录它时,它有适当的值。

这是我的目标VC的.h

代码语言:javascript
运行
复制
#import <UIKit/UIKit.h>

@interface TRDiscussionDetailsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (strong, nonatomic) NSString *discussionID;


@end

当我将discussionID值记录在viewDidLoad中时:结果为null。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-04 16:20:24

如果TRDiscussionDetailsViewController是您的目标视图控制器,则需要保持它不受segue的影响,而不是重新实例化它。我觉得你应该这么做:

代码语言:javascript
运行
复制
-(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);



    }
}

希望它能帮上忙

票数 3
EN

Stack Overflow用户

发布于 2014-04-04 16:20:06

取代:

TRDiscussionDetailsViewController *ddvc = [TRDiscussionDetailsViewController alloc init];

通过以下方式:

TRDiscussionDetailsViewController *ddvc = (TRDiscussionDetailsViewController *)segue destinationController;

因为,在您的代码中,您正在创建一个新的TRDiscussionDetailsViewController,但这不是执行segue时要在其上创建的。

票数 2
EN

Stack Overflow用户

发布于 2014-04-04 16:20:14

你可以试试这个

代码语言:javascript
运行
复制
-(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);



}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22867922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档