我的应用中有 4 个视图,即出版年份 > 书籍 > 作者 > 作者描述
我通过这种格式的 xml 获取这些数据。
那么如何根据选择的书和选择的作者传递作者 desc 中的信息?我已经创建了一个对象名称“结果”,其中包含此已解析元素的所有详细信息。解析已完全完成。但是我无法根据从一个视图到第三个视图中选择的行来显示和传输信息。
我的应用中有 4 个视图,即出版年份 > 书籍 > 作者 > 作者描述
我通过这种格式的 xml 获取这些数据。
那么如何根据选择的书和选择的作者传递作者 desc 中的信息?我已经创建了一个对象名称“结果”,其中包含此已解析元素的所有详细信息。解析已完全完成。但是我无法根据从一个视图到第三个视图中选择的行来显示和传输信息。
有几种常用的实践和模式可以在对象之间发送消息和值:
如果您需要按创建顺序将消息和/或值传递给对象 - 使用assignment
或straight call
. 以及@obuseme已经写过。
如果您需要以创建的反向顺序将消息和/或值传递给对象,请使用delegation
. “倒序”我的意思是所有者创建它的子对象并等待它的一些回调。
还有一个名为singleton
. 您可以使用它从任何对象访问它。
在 didSelectRowAtIndexPath 中,当您创建新的视图控制器以推送到屏幕上时(假设您使用的是 uinavigationcontroller 堆栈,听起来像您),然后将“result”设置为新控制器上的属性
我在猜测您的视图控制器的名称,此外,我使用通用指针类型“id”作为结果,如果您愿意,可以将其替换为特定的结果类。
YearPublishedViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
BooksListViewController *booksVC = [[BooksListViewController alloc] initWithNibName:@"BooksListViewController" bundle:nil];
booksVC.result = self.result;
}
BooksListViewController.h
#import <UIKit/UIKit.h>
@interface BooksListViewController : UITableViewController
@property (nonatomic, retain) id result;
BooksListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AuthorListViewController *authorVC = [[AuthorListViewController alloc] initWithNibName:@"AuthorListViewController" bundle:nil];
authorVC.result = self.result;
}
AuthorListViewController.h
#import <UIKit/UIKit.h>
@interface AuthorListViewController : UITableViewController
@property (nonatomic, retain) id result;
AuthorListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AuthorDescriptionViewController *authorDescVC = [[AuthorDescriptionViewController alloc] initWithNibName:@"AuthorDescriptionViewController" bundle:nil];
authorDescVC.result = self.result;
}
AuthorDescriptionViewController.h
#import <UIKit/UIKit.h>
@interface AuthorDescriptionViewController : UIViewController
@property (nonatomic, retain) id result;
作者描述ViewController.m
//use self.result wherever you need it here
还要确保在每个控制器的释放中释放“结果”,以进行正确的内存管理。
Inode 将数组的值从第一个视图传递到第四个视图,然后将值从 View1 传递到 View2,从那里传递到 View3,再从那里传递到 View4。这种根据苹果指南传递值的标准方式