uisplitviewcontroller:将选定的行从主传递到细节
Posted
技术标签:
【中文标题】uisplitviewcontroller:将选定的行从主传递到细节【英文标题】:uisplitviewcontroller: passing selected row from master to detail 【发布时间】:2013-05-09 17:15:44 【问题描述】:这几天我一直在为 UISplitViewControllers 苦苦挣扎,这是我的问题:我有一个主视图,声明如下
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@class DetailViewController;
@interface MasterViewController : UITableViewController
NSMutableArray *title, *subTitle;
unsigned int quantity;
@property (strong, nonatomic) DetailViewController *detailViewController;
@end
在 master 的 .m 文件中,一切正常(我能够从 sqlite db 填充表并按行显示内容)。当它选择一行并填充右侧的详细视图,没有任何反应。这是行选择:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
MyObject itemFromDB;
/*
... DB stuff here ...
*/
self.detailViewController.detailItem = itemFromDB;
现在是 DetailViewController 实现:
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>
@property (strong, nonatomic) MyObject *detailItem;
@property (weak, nonatomic) IBOutlet UILabel *name, *phone;
@end
还有细节的 .m:
#import "DetailViewController.h"
@interface DetailViewController ()
- (void)configureView;
@end
@implementation DetailViewController
- (void)setDetailItem:(MyObject *)newItem
if (_detailItem != newItem)
_detailItem = newItem;
[self configureView];
- (void)configureView
if (self.detailItem)
self.name.text = [self.detailItem name];
self.phone.text = [self.detailItem phone];
- (void)viewDidLoad
[super viewDidLoad];
[self configureView];
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
简单来说:选择行后细节没有注意到任何变化。有什么帮助吗?
【问题讨论】:
【参考方案1】:你从未定义过 self.detailViewController。你应该这样做:
self.detailViewController = self.splitViewController.viewControllers[1];
【讨论】:
我不敢相信这是这么小的事情......我真的需要睡觉xD非常感谢;)以上是关于uisplitviewcontroller:将选定的行从主传递到细节的主要内容,如果未能解决你的问题,请参考以下文章
将 UIToolBar 放在 UISplitViewController 上方?
如何将视图控制器推送到 UISplitViewController
不能将 UISplitViewController 放在 UITabBarController 内
UISplitViewController - 带有 UINavigationController 的多个细节视图