加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 通过/共享数据的方式有多少种b / w视图控制器

发布时间:2020-12-14 17:38:52 所属栏目:百科 来源:网络整理
导读:我是 IOS和Objective-C以及整个MVC范例的新手,我坚持以下内容. 我正在研究(副本)联系人应用程序,也可以在iphone中作为内置应用程序.我想通过另一个视图控制器传递数据,数据传递(null):(. 我的问题是,如何将数据从一个视图传输到另一个视图? 解决方法 由于您
我是 IOS和Objective-C以及整个MVC范例的新手,我坚持以下内容.

我正在研究(副本)联系人应用程序,也可以在iphone中作为内置应用程序.我想通过另一个视图控制器传递数据,数据传递(null):(.

我的问题是,如何将数据从一个视图传输到另一个视图?

解决方法

由于您获得的答案最多,在一个控制器和另一个控制器之间传递数据只是意味着将变量从一个控制器分配给另一个控制器.
如果您有一个控制器列出您的联系人而另一个控制器显示联系人详细信息并且流程从列表开始并在选择联系人后转到详细信息,您可以分配联系人变量(可能是数组中的对象)显示在列表中,并在显示此视图之前将其分配给详细视图控制器.

- (void)goToDetailViewControllerForContact:(Contact *)c
{
    ContactDetailViewController *detailVC = [[[ContactDetailViewController alloc] init] autorelease];
    detailVC.contact = c;
    [self.navigationController pushViewController:c animated:YES];
    //[self presentModalViewController:detailVC animated:YES]; //in case you don't have a navigation controller
}

另一方面,如果要将详细控制器中的新联系人插入列表控制器,我想最好的方法是将列表控制器指定为详细信息控制器的委托,因此当添加联系人时,委托人被通知并按预期运行(将联系人插入数组并重新加载表视图?).

@protocol ContactDelegate <NSObject>
- (void)contactWasCreated:(Contact *)c;
// - (void)contactWasDeleted:(Contact *)c; //may be useful too...
@end

@interface ContactListViewController : UIViewController <ContactDelegate>
@property (nonatomic,retain) NSArray *contacts;
...
@end

@implementation ContactListViewController
@synthesize contacts;
...

- (void)goToDetailViewControllerForContact:(Contact *)c
{
    ContactDetailViewController *detailVC = [[[ContactDetailViewController alloc] init] autorelease];
    detailVC.contact = c;
    detailVC.delegate = self;
    [self.navigationController pushViewController:c animated:YES];
    //[self presentModalViewController:detailVC animated:YES]; //in case you don't have a navigation controller
    }

- (void)contactWasCreated:(Contact *)c
{
    self.contacts = [self.contacts arrayByAddingObject:c]; //I'm not sure this is the correct method signature...
    [self reloadContacts]; //may be [self.tableView reloadData];

}

...
@end


@interface ContactDetailViewController : UIViewController

@property (nonatomic,assign) id<ContactDelegate> delegate;
...
@end


@implementation ContactDetailViewController
@synthesize delegate; //remember to don't release it on dealloc as it is an assigned property
...

- (void)createContactAction
{
    Contact *c = [[[Contact alloc] init] autorelease];
    [c configure];
    [self.delegate contactWasCreated:c];
}

...
@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读