【问题标题】:UIView not Initialized from Storyboard SegueUIView 未从 Storyboard Segue 初始化
【发布时间】:2012-04-12 11:34:09
【问题描述】:

我正在尝试从日历上的一天的 UIbutton 到带有当天信息的 DayViewController 执行 Storyboard segue。发送者 UIbutton 的 currentTitle 应该传递给 DayViewController 的 dayView 中的 UILabel。它成功地连接到新的 VC 并将按钮标题分配给其中的一个属性,但是我的 DayViewController 的 dayView(和基本视图)没有被初始化(它们在调试器中的地址都是 0x0)并且我得到一个空白页。我怎样才能让这些视图在这个 segue 中初始化? (我认为链接到 VC 的视图在连接到时会自动初始化?)

这里是调用的 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;

提前致谢!

【问题讨论】:

  • 如果您将@property 更改为strong 而不是weak,这是否有效?
  • 天哪!谢谢陌生人!
  • 不客气!欢迎使用 Stack Overflow (SO),当他们回答您的问题时,请接受答案(通过单击答案旁边的复选标记),以表扬帮助您的人!
  • 再次感谢您!我一直在寻找如何在评论中给你信用,但现在我明白了。您让我在这个网站上的第一次体验非常棒,我一定会开始贡献/提出更多问题!
  • 太棒了!尝试通过回答您也有经验的问题来帮助他人。 :-)

标签: uiview initialization storyboard segue


【解决方案1】:

当您声明一个属性为弱时,它不会“保留”该值,除非其他人也引用了它。当新的视图控制器被按下时,旧的按钮消失了,留下 currentDayNumber 作为唯一的参考,所以它自动将自己设置为 nil。 (这是弱者应该做的。)

如果您无论如何都想保留对它的引用,请使用 strong 而不是 weak 并确保在某处(如 viewDidUnload)将 _currentDayNumber 设置为 nil,这样您就不会永远保留它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多