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)
当我执行时,我进入了一个包含所有大数字的循环.有人可以帮我解决这个问题吗?
这段代码循环:
-(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)