So I found a nice outline that gives me what I want. However, I can't switch to other storyboards?

How do I segue into other storyboards with a 'built in' window?

Included is my ViewController.M implementation file. This code seems to make a table on its own instead of use the storyboard (navigation controller)...

How do I make it work to segue to other storyboards?

   #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
有帮助吗?

解决方案

To instantiate a view controller from another storyboard you can use UIStoryboard storyboardWithName

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

This is more a general answer, though.

其他提示

I don't understand what you exactly asking but for simple segue i used this line of code

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

if you want to segue without linking than you have to give identifier to view controller and use this code below

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

I am not entire sure what you mean by "Segue to other storyboard"? The following code allows you to jump to a totally different view controller tree inside the same storyboard by a click of button or other action.

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];

Main is the name of your storyboard that you want to jump into.

SecondScreen is the storyboard ID of the view controller. Most likely it is a navigation or a container. You will need to set "SecondScreen" under identity inspector.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top