我是 iOS 编程的新手,所以我想从头开始制作这个东西,以便能够理解整个东西是如何工作的。因此,我没有使用主详细信息模板,而是从头开始这样做。
在主视图和详细视图之间传递数据方面,我遇到了巨大的障碍。目前,每当我点击主视图的项目时,它都会在细节视图控制器上查找第一个视图,我们称之为mainswitchviewcontroller
. 它是第一个ViewController
通过 segue 连接到UINavigationController
详细控制器部分(请参见下图)。
这发生在登录后显示viewcontroller
,我希望用户在访问整个应用程序之前选择一个选项。这将引导他们进入ViewController
流程的最后一个(请参阅下图 - 红色圆圈)。
现在我想做的是:
@interface MasterListViewController : UITableViewController{
}
@property (nonatomic) int matNum;
@property (strong, nonatomic) DetailStaffMainContentViewController *detailViewController;
@end
:
:
@implementation MasterListViewController
@synthesize matNum;
:
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(UIViewController *vc in self.splitViewController.viewControllers){
NSLog(@"%@)", vc.title);
}
self.detailViewController.teststring = @"gronk";
}
这是我的 detailViewController(我想访问的那个)
@implementation DetailStaffMainContentViewController
@synthesize tableView;
@synthesize teststring;
@synthesize lblOutput;
现在在选择行时,我分配了teststring
我想用来填充控制器上的标签的行。这就是我所做的。
我的问题是:
我收到一个错误。想知道我做错了什么?
[MainSwitchBoardViewController setTeststring:]: unrecognized selector sent to instance 0x7572190
这是传递数据的推荐方式吗?还是我应该坚持使用通知中心?
想法?
编辑 只是为了让您了解应用程序的流程:
用户登录(如果用户名不存在,会弹出浮动视图控制器并强制用户登录。
一旦用户登录,弹出窗口就会消失,然后询问用户在当前会话中使用什么类型的角色(例如,职员或战士)。
如果用户选择斗士,则将用户推到顶部 VC 如果用户选择人员,则将用户推到底部 VC(集合控制器)
对于员工:目前我正在使用这个 [self perfermSegueWithIdentifier:sender:self] 推送到最后一个 VC
一旦用户看到最后一个 VC (DetailsStaffView),我希望这是用户进行交易的主要详细信息视图。还有几个弹出窗口?(或者可能需要为特定交易添加另一个推送到另一个 VC)。但最终我不希望用户访问第一个 Viewcontroller (MasterSwitchBoard)
编辑 2 这是控制登录后第一个 VC 的主交换机板类。
@interface MainSwitchBoardViewController : UIViewController{
}
@property (strong, nonatomic) IBOutlet UILabel *txtLabel;
- (IBAction)btnStaff:(id)sender;
- (IBAction)btnAdmin:(id)sender;
@end
这是 atm 自动推送到最后一个 VC 的集合 VC。一开始我使用了一个通知,但似乎没有必要,所以我把它拿出来了。
@interface MatListCollectionViewController ()
@end
@implementation MatListCollectionViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self performSegueWithIdentifier:@"SeguePushToStaffDetailFromMats" sender:self];
}
然后是细节工作人员
@interface DetailStaffMainContentViewController : UIViewController{
}
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, retain) IBOutlet UILabel *lblOutput;
@property (nonatomic, retain) NSString *teststring;
@end
@implementation DetailStaffMainContentViewController
@synthesize tableView;
@synthesize teststring;
@synthesize lblOutput;