我很难在UISplitViewController内的两个视图控制器之间传递数据。我正在关注this 教程。我能够在主视图和详细视图上创建一个带有UITableViews的拆分视图控制器。现在,我真正想要的是当我点击主表中的特定行时,它必须向详细信息视图发送一些值。
我正在玩一个自定义委托,将一些值从一个视图控制器传递到另一个视图控制器,以查看它们之间是否存在任何通信,但似乎没有任何工作方式。
在MasterTableView.h中
@protocol sendingProtocol <NSObject>
-(void)passSomeValue:(NSString *)someValue;
@end
@interface MasterTableView : UITableViewController
{
NSArray *menuArray;
id<sendingProtocol>delegate;
}
@property (nonatomic,assign) id<sendingProtocol>mydelegate;
@end
在.m文件中合成。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[[self mydelegate] passSomeValue:@"Some Value"];
}
在DetailTableView.h中
-(void)passSomeValue:(NSString *)someValue
{
NSLog(@"%@", someValue);
}
请注意我在ViewDidLoad方法中调用mydelegate。这是写方式吗?有人可以帮忙吗?
- (void)viewDidLoad
{
[super viewDidLoad];
MasterTableView *masterView = [[MasterTableView alloc] init];
masterView.mydelegate = self;
}
提前谢谢!
答案 0 :(得分:1)
在viewDidLoad
的{{1}}方法中,您不应该创建新的DetailTableView
对象。错误在于此方法:
MasterTableView
您正在创建- (void)viewDidLoad
{
[super viewDidLoad];
MasterTableView *masterView = [[MasterTableView alloc] init];
masterView.mydelegate = self;
}
的另一个对象,并将其委托设置为self,因此存在所有问题。
要将MasterTableView
的委托设置为MasterTableView
,请转到DetailTableView
。您必须在AppDelegate中定义AppDelegate.h
和MasterTableView
对象。
DetailTableView