使用segue将Int从一个ViewController传递给另一个ViewController

Ste*_*ann 1 iphone objective-c storyboard ios segue

我试图将一个int从一个VC传递到另一个VC.我是这样做的.

在我的VC1中,showDetail当我调用prepareForSegue方法时,我正在做一个segue .看起来像这样.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *indexPath = (NSIndexPath *)sender;
    News *news = [arrNews objectAtIndex:indexPath.row];
    NSLog(@"news id is %@",news.new_id);
    if ([segue.identifier isEqualToString:@"showDetail"]) {
        [segue.destinationViewController setNewsId:(int)news.new_id];
    }
}
Run Code Online (Sandbox Code Playgroud)

在Log中我得到了正确的数字.现在在我的VC2中,我已经声明了这样的int.

@property (nonatomic) int newsId;
Run Code Online (Sandbox Code Playgroud)

我的setMethod看起来像这样.

-(void)setNewsId:(int)newsId{
    NSLog(@"news id is %d",newsId);
    self.newsId = newsId;

}
Run Code Online (Sandbox Code Playgroud)

当我执行时,我进入了一个包含所有大数字的循环.有人可以帮我解决这个问题吗?

Mar*_*ski 8

这段代码循环:

-(void)setNewsId:(int)newsId{
    NSLog(@"news id is %d",newsId);
    self.newsId = newsId;
}
Run Code Online (Sandbox Code Playgroud)

应该是:

-(void)setNewsId:(int)newsId{
    NSLog(@"news id is %d",newsId);
    _newsId = newsId;
}
Run Code Online (Sandbox Code Playgroud)

_newsId是ivar.

UPD 似乎news.new_id有NSNumber类型.所以提取整数值

[segue.destinationViewController setNewsId:[news.new_id integerValue]];
Run Code Online (Sandbox Code Playgroud)