Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 相同的视图控制器UI,不同的功能_Ios_Objective C - Fatal编程技术网

Ios 相同的视图控制器UI,不同的功能

Ios 相同的视图控制器UI,不同的功能,ios,objective-c,Ios,Objective C,我有一个视图控制器,它的UI在两个类之间是相同的,但功能不同。其中一个类使用视图控制器添加联系人,另一个类使用它编辑联系人 在拥有不同类(添加/编辑类)时,是否有方法“重用”视图控制器的布局/视图 segue.destinationViewController属于ViewContact类型,这两个AddContact和EditContact都继承自该类型。它所做的一切都是为它的两个孩子使用的文本字段保留输出 不幸的是,上面的代码段不起作用,因为您无法真正将父对象类型转换为其子对象。我通常会创建一

我有一个视图控制器,它的UI在两个类之间是相同的,但功能不同。其中一个类使用视图控制器添加联系人,另一个类使用它编辑联系人

在拥有不同类(添加/编辑类)时,是否有方法“重用”视图控制器的布局/视图

segue.destinationViewController
属于
ViewContact
类型,这两个
AddContact
EditContact
都继承自该类型。它所做的一切都是为它的两个孩子使用的文本字段保留输出


不幸的是,上面的代码段不起作用,因为您无法真正将父对象类型转换为其子对象。

我通常会创建一个包含xib的单一视图控制器,并添加如下属性:

头文件

typedef NS_ENUM(NSUInteger, CRUD) { //Create, Read, Update, Delete
    CTCreate,
    CTRead

};

@property ( assign, readonly ) CRUD option;
在该视图控制器的初始化过程中,您会遇到如下情况:

标题

- (id)initWithOption:(CRUD)optionValue;
实施

- (id)initWithOption:(CRUD)optionValue {
    ...
    option = optionValue;

    return self;

}
在这个类的实现中,如果这个类插入新记录、添加或更新记录、编辑,则会有if语句,其中的差异是什么,比如当用户点击save时


希望这有帮助:)请随意要求更多澄清:)p

您可以使用VC、AddVC(从VC继承)、EditVC(从VC继承)。如果更改非常小,您甚至可以在开始时使用var来设置它是否用于编辑或添加。是,请使用相同的布局(严格来说)。要重复使用,请保留一个变量,该变量将说明您是否在该布局中进行添加或编辑…继承很好,我甚至没有想到这一点。或者,您可以简单地将添加和编辑功能抽象到单独的组件中,并使用单个VC。这样,您就可以在同一屏幕上提供更多功能,并在此处使用@DanielGalasko切换statesAgreeing。除了实际的“保存”逻辑之外,添加函数通常是一个编辑函数,恰好以空字段开头。我做了类似的事情,很抱歉从未接受您的答案。顺便说一句,你看起来有点像约翰·弗鲁西安特。摇滚乐吧,也许我确实长得像他:3很高兴你有办法解决问题,tho:)
- (id)initWithOption:(CRUD)optionValue {
    ...
    option = optionValue;

    return self;

}