私は iOS プログラミングが初めてなので、全体がどのように機能するかを理解できるように、このことをゼロから作成したいと考えています。そのため、マスター詳細テンプレートを使用する代わりに、これをゼロから行いました。
マスター ビューと詳細ビューの間でデータを渡すという点で、大きな障害があります。現時点では、マスター ビューの項目をタップすると、詳細ビュー コントローラーの最初のビューが検索されます。これを と呼びましょうmainswitchviewcontroller
。ViewController
セグエ経由で詳細コントローラー部分に接続するのは最初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 (コレクション コントローラー) にプッシュされます。
FOR スタッフ: 現在、この [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;