vikeyToy 2013-06-20 06:53 采纳率: 0%
浏览 991

从xib到storyboard的封装性问题

用xib可以调用不同的初始化块。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Fetch Note...
    // Initialize Edit Note View Controller with the fetched Note
    EditNoteViewController *vc = [[EditNoteViewController alloc] initWithNote:note];

    // Push View Controller onto Navigation Stack
    [self.navigationController pushViewController:vc animated:YES];
}

这样我就可以保持变量(在EditNoteViewController中)私有化,而且可以设置变量的默认值。比如:

- (id)initWithNote:(Note *)note {
    // ....
    if (self) {
        self.note = note;
        self.isEditing = YES;
    }
    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    //...
    if (self) {
        self.isEditing = NO;
    }
    return self;
}

现在要用storyboard,有两个问题:

1.在prepareForSegue设置变量,怎么不暴露变量或其他实现?
2.能设置默认值吗?

谢谢您的解答。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-31 22:17
    关注

    在使用 Storyboard 时,可以通过在目标视图控制器中定义属性并使用 prepareForSegue 方法来设置变量,而不会暴露这些变量或其他实现。


    例如,假设您有一个 Storyboard 中的视图控制器,其中包含一个名为 "note" 的属性,该属性代表要编辑的笔记。您可以在 prepareForSegue 方法中将笔记赋值给该属性,如下所示:

    (void) prepareForSegue: (UIStoryboardSegue * ) segue sender: (id) sender
    {
        if([segue.identifier isEqualToString: @"editNote"])
        {
            EditNoteViewController * vc = segue.destinationViewController;
            vc.note = self.selectedNote;
        }
    }
    

    在这种情况下,selectedNote 是你在源视图控制器中的属性,而 note 是目标视图控制器中的属性。您可以在目标视图控制器中设置其他默认值,如下所示:

    (void) viewDidLoad
    {
        [super viewDidLoad];
        if(!self.note)
        {
            self.note = [
                [Note alloc] init
            ];
            self.isEditing = NO;
        }
        else
        {
            self.isEditing = YES;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突