UIView未从Storyboard中初始化Segue
问题描述:
我正试图从UIbutton执行Storyboard segue,这是Day DayController上日历上的一天,并且当天有信息。发送者UIbutton的currentTitle应该在DayViewController的dayView中传递给UILabel。它成功插入到新的VC中,并将按钮标题分配给其中的一个属性,但DayViewController的dayView(和基本视图)没有初始化(它们在调试器中的地址都是0x0),并且我得到一个空白页。我怎样才能让这些视图在这个segue中初始化? (我想,当segued到视图链接到VC被自动初始化?)UIView未从Storyboard中初始化Segue
这里的prepareForSegue获取调用:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton *)sender
{
if ([segue.identifier isEqualToString:@"ShowDay"]) {
DayViewController *vc = segue.destinationViewController;
[vc setCurrentDayNumber:sender.currentTitle];
}
这是在新的VC setCurrentDayNumber
-(void)setCurrentDayNumber:(NSString *)currentDayNumber
{
_currentDayNumber = currentDayNumber;
[self.dayView setNeedsDisplay];
}
这里是我的视图链接到故事板中的DayViewController。
@property (nonatomic, weak) IBOutlet DayView *dayView;
在此先感谢!
答
当你声明一个属性很弱时,它不会“持有”该值,除非其他人也引用了它。当新视图控制器被按下时,旧按钮消失,只剩下currentDayNumber作为唯一引用,所以它自动将它自己设置为nil。 (这是弱是应该做的。)
如果你想保持对它的引用无论什么时候,用strong
代替weak
并确保设置_currentDayNumber为零的地方(如viewDidUnload),这样你不永远不会保留它。
如果将@property更改为'strong'而不是'weak',这是否可行? – lnafziger 2012-03-28 20:14:42
哦,我的天啊!谢谢陌生人! – Patrick 2012-03-28 20:20:40
不客气!欢迎来到堆栈溢出(SO),当他们回答你的问题时,请接受答案(通过点击答案旁边的复选标记),以便给予帮助你的人的功劳! – lnafziger 2012-03-28 20:29:27