不能在故事板之间进行划分

时间:2014-05-05 05:16:38

标签: ios objective-c segue

所以我发现了一个漂亮的轮廓,它给了我想要的东西。但是,我无法切换到其他故事板?

如何使用内置的'进入其他故事板?窗口?

包含我的ViewController.M实现文件。这段代码似乎自己制作了一个表,而不是使用故事板(导航控制器)......

如何使其与其他故事板相互作用?

   #import "ViewController.h"        

        @interface ViewController ()

        @end

        #define getDataURL @"http://??.??.??.??/phpfile12.php"

        @implementation ViewController
        @synthesize json, storesArray, myTableView;
        - (void)viewDidLoad
        {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.




    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};


    [self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.view.backgroundColor = [UIColor clearColor];

    //set the title
    self.title = @"";

    [self retrieveData];
        }


        - (void)didReceiveMemoryWarning
        {
            [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
        }

        #pragma mark - UITableView Datasource

        - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
        }

        - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return storesArray.count;
        }

        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:        (NSIndexPath *)indexPath {
            static NSString *cellIdentifier = @"Cell";

            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

            if(cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }

    //cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];

    //Retrieve the current city object for use with this indexPath.row
    Store * currentStore = [storesArray objectAtIndex:indexPath.row];

    cell.textLabel.text = currentStore.storeName;
    cell.detailTextLabel.text = currentStore.storeAddress;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;
        }

        #pragma mark - UITableView Delegate methods

        - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
        {
            DetailViewController * dvc = [[DetailViewController alloc]init];

    //Retrieve the current selected city
    Store * currentStore = [storesArray objectAtIndex:indexPath.row];
    dvc.name = currentStore.storeName;
    dvc.address = currentStore.storeAddress;
    dvc.startDate = currentStore.storeStartDate;
    dvc.endDate = currentStore.storeEndDate;
    dvc.startTime = currentStore.storeStartTime;
    dvc.endTime = currentStore.storeEndTime;
    dvc.totalSales = currentStore.storeTotalSales;
    dvc.voids = currentStore.storeVoids;
    dvc.discounts = currentStore.storeDiscounts;
    dvc.guestCount = currentStore.storeGuestCount;
    dvc.peopleServed = currentStore.storePeopleServed;
    dvc.employeeClockIn = currentStore.storeEmployeeClockIn;


    [self.navigationController pushViewController:dvc animated:YES];
        }


        #pragma mark - Methods
        - (void) retrieveData
        {
    NSURL * url = [NSURL URLWithString:getDataURL];
    NSData * data = [NSData dataWithContentsOfURL:url];

            json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];



            //Set up our cities array
            storesArray = [[NSMutableArray alloc]init];

            for (int i = 0; i < json.count; i++)
            {
                //Create city object
        NSString * sID = [[json objectAtIndex:i] objectForKey:@"id"];
        NSString * sAddress = [[json objectAtIndex:i] objectForKey:@"storeAddress"];
        NSString * sName = [[json objectAtIndex:i] objectForKey:@"storeName"];
        NSString * sStartDate = [[json objectAtIndex:i] objectForKey:@"storeStartDate"];
        NSString * sStartTime = [[json objectAtIndex:i] objectForKey:@"storeStartTime"];
        NSString * sEndDate = [[json objectAtIndex:i] objectForKey:@"storeEndDate"];
        NSString * sEndTime = [[json objectAtIndex:i] objectForKey:@"storeEndTime"];
        NSString * sTotalSales = [[json objectAtIndex:i] objectForKey:@"storeTotalSales"];
        NSString * sVoids = [[json objectAtIndex:i] objectForKey:@"storeVoids"];
        NSString * sDiscounts = [[json objectAtIndex:i] objectForKey:@"storeDiscounts"];
        NSString * sGuestCount = [[json objectAtIndex:i] objectForKey:@"storeGuestCount"];
        NSString * sPeopleServed = [[json objectAtIndex:i] objectForKey:@"storePeopleServed"];
        NSString * sEmployeeClockIn = [[json objectAtIndex:i] objectForKey:@"storeClockIn"];




                Store * myStore = [[Store alloc]initWithStoreID: (NSString *) sID andStoreName: (NSString *) sName andStoreStartDate: (NSString *) sStartDate andStoreStartTime: (NSString *) sStartTime andStoreEndDate: (NSString *) sEndDate andStoreEndTime: (NSString *) sEndTime andStoreTotalSales: (NSString *) sTotalSales andStoreVoids: (NSString *) sVoids andStoreDiscounts: (NSString *) sDiscounts andStoreGuestCount: (NSString *) sGuestCount andStorePeopleServed: (NSString *) sPeopleServed andStoreEmployeeClockIn: (NSString *) sEmployeeClockIn andStoreAddress: (NSString *) sAddress];

                //Add our city object to our cities array
                [storesArray addObject:myStore];
            }




            [self.myTableView reloadData];


        }

    @end

3 个答案:

答案 0 :(得分:2)

要从另一个故事板实例化视图控制器,您可以使用UIStoryboard storyboardWithName

UIViewController *dvc = [[UIStoryboard storyboardWithName:@"yourStoryboardName" bundle:nil] instantiateViewControllerWithIdentifier:@"yourViewIdentifier"];
[self.navigationController pushViewController:dvc animated:YES];

但这是一般答案。

答案 1 :(得分:1)

我不明白你究竟在问什么,但对于简单的segue,我使用了这行代码

[self performSegueWithIdentifier:@"identifier" sender:self];

如果你想在没有链接的情况下进行segue,你必须给视图控制器提供标识符并使​​用下面的代码

UIViewController *homeViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"identifier"];
    [self presentViewController:homeViewController animated:0 completion:nil];

答案 2 :(得分:1)

我不完全确定你的意思&#34; Segue to other storyboard&#34;?以下代码允许您通过单击按钮或其他操作跳转到同一故事板内完全不同的视图控制器树。

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:@"SecondScreen"];
delegate.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
delegate.window.rootViewController = initViewController;
[delegate.window makeKeyAndVisible];

主要是您要跳转到的故事板的名称。

SecondScreen 是视图控制器的故事板ID。很可能它是导航或容器。您需要设置&#34; SecondScreen &#34;在身份检查员下。