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

时间:2015-07-26 12:09:06

标签: ios objective-c

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

有没有办法重复使用"具有不同类(添加/编辑类)的视图控制器的布局/视图?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqual:@"AddContact"]) {
        UINavigationController *navigationController = segue.destinationViewController;
        AddContact *addContact = (AddContact *)navigationController.viewControllers.firstObject;
        addContact.delegate = self;
    }
    else if ([segue.identifier isEqual:@"EditContact"]) {
        EditContact *editContact = (EditContact *)segue.destinationViewController;
        editContact.currentContact = [self.contacts objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
    }
}

segue.destinationViewController的类型为ViewContactAddContactEditContact均来自。{1}}。所有这一切都保留了它的两个孩子使用的文本字段的出口。

不幸的是,上面的代码片段并不起作用,因为你无法将父母强加给他们的孩子。

1 个答案:

答案 0 :(得分:1)

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

标题文件

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

};

@property ( assign, readonly ) CRUD option;

在这个视图控制器的初始化中你会有类似的东西:

标题

- (id)initWithOption:(CRUD)optionValue;

<强> implentation

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

    return self;

}

在这个类的实现中你有if语句,例如当用户点击保存时,如果这个类插入新记录,添加或更新记录,编辑

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