2013-03-05 2 views
0

Прежде всего, я должен сказать, что я являюсь завершенным новичком в Objective-C и iOS-программировании.Переключение с одного взгляда на другое

Okey, поэтому у меня есть простое приложение, но у меня возникают некоторые проблемы с попыткой переключиться с одного взгляда на другой. Планируется сделать «логин-логику» в представлении, называемом RootView, а затем отправить пользователя на номер DataViewController. Я пробовал googeling вокруг, но независимо от того, как я пытаюсь реализовать код, он заставляет Xcode плакать.

Как я могу достичь желаемого эффекта?

Вот следующие файлы:

RootViewController.h

#import <UIKit/UIKit.h> 
@interface RootViewController : UIViewController <UIPageViewControllerDelegate> 
@property (strong, nonatomic) UIPageViewController *pageViewController; 
@end 

RootViewController.m

@interface RootViewController() 

@end 

@implementation RootViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

@end 

DataViewController.h

#import <UIKit/UIKit.h> 
@interface DataViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UILabel *dataLabel; 
@property (strong, nonatomic) id dataObject; 
@end 

DataViewController.m

#import "DataViewController.h" 

@interface DataViewController() 

@end 

@implementation DataViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

@end 

Это в значительной степени просто пустой шаблон, но по какой-то причине он не работает с решениями, которые я пробовал earier.

+0

Вы используете раскадровки? –

+2

Я предлагаю вам прочитать 2 документа, связанных в верхней части ссылки класса UIViewController. Они многое объяснят, и вы будете очень расстроены, если не научитесь основам, прежде чем пытаться писать приложения. – rdelmar

+0

@rdelmar: Я думаю, вы правы, но у меня есть 10-летний опыт позади меня. Я лучше всего учусь, когда у меня есть какой-то проект, чтобы держать меня в движении.Я обычно получаю правильные решения Google, но не на этот раз;) – OptimusCrime

ответ

0

Сделано это работать с этим:

- (void)viewDidAppear:(BOOL)animated 
{ 
    UIStoryboard *storyboard = self.storyboard; 
    UIViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"GeoPartyDataViewController"]; 
    [self presentViewController: mtvc animated:NO completion:nil]; 
} 
0

Когда вы будете готовы двигаться дальше, в вашем RootViewController (может быть любым способом, вам нравится):

GeoPartyDataViewController *dataController = [[GeoPartyDataViewController alloc] initWithNibName:@"GeoPartyDataViewController.xib" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:dataController animated:TRUE]; 

Не забудьте иметь #import "DataViewController.h" в вашем RootViewController.m.

Предполагаемая база данных, которую вы указали до сих пор, у вашего DataViewController есть связанный файл .xib с именем GeoPartyDataViewController.xib. Это всего лишь один пример. Если вы работаете с раскадрой или каким-либо другим механизмом, дайте мне знать в комментариях.

+0

Эй, спасибо за отличный ответ. Я забыл упомянуть, что я использую раскадровки. Ваш код ничего не делает, но (по причине som) не приводит к сбою приложения. – OptimusCrime

0

Сначала нужно добавить GeoPartyDataViewController.h к RootViewController.m, такие как

#import "GeoPartyDataViewController.h" 

А теперь идти к GeoPartyDataViewController, вам нужно создать экземпляр.

GeoPartyDataViewController *obj =[[GeoPartyDataViewController alloc] initWithNibName:@"GeoPartyDataViewController.xib" bundle:[NSBundle mainBundle]]; 
[self presentViewController:obj animated:YES completion:nil]; 

Над кодом записи в relavent место, куда вы хотите поехать на GeoPartyDataViewController.