0
- (void)createBarButtons
{
    UIBarButtonItem *myCheckButton = [[UIBarButtonItem alloc] initWithTitle:@"Check Records" style:UIBarButtonItemStylePlain target:self action:@selector(checkRecordsAction)];
    UIBarButtonItem *mySaveButton = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction)];
    [mySaveButton setTintColor:[UIColor colorWithRed:34.0/255.0 green:97.0/255.0 blue:221.0/255.0 alpha:1]];
    NSArray *myButtonArray = [[NSArray alloc]initWithObjects:mySaveButton, myCheckButton,nil];
    self.navigationItem.rightBarButtonItems = myButtonArray;
}

我不知道这个问题是否属于过于本地化的类别。但是请帮帮我。所以就像你看到的那样,我创建了两个条形按钮项。保存只是将数据保存到 CoreData,工作得很好。但是检查记录应该启动一个新的 UITableviewcontroller。

- (void)checkRecordsAction
{
NSLog(@"the new stack action");
ITMSyncRecordsTVC *syncRecords  = [[ITMSyncRecordsTVC alloc]init];
//  [self presentViewController:syncRecords animated:YES completion:^{
//  self.navigationController.view.superview.bounds = CGRectMake(0, 0, 250, 250);}];
[self.navigationController pushViewController:syncRecords animated:YES];
}

ITMSyncRecordsTVC是一个TableViewController带有“后退”按钮的按钮。因此,当我单击检查记录时,它会启动一个tableview控制器,但其中没有值,并且它没有显示我放在上面的“后退”栏按钮。到目前为止,我一直在使用 segues 和 storyboards 就好了。但是我不知道如何在没有它们的情况下启动新的视图控制器。我第一次进入 ios 是 ios6。我错过了一些我不知道的东西。所以让我知道如何调用/启动一个新的 TableViewController。在 android 中,我们有可以解决问题的意图。如果您需要更多信息,请告诉我。谢谢... 编辑:所以我编辑了我的checkRecordsAction代码。

编辑 :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

ITMOrdersVC *ordersVC = [[ITMOrdersVC alloc]init];
NSLog(@"at line 188 %d",indexPath.row);
if(indexPath.row < self.salesOrdersArray.count)
{
    ordersVC.salesOrder = [self.salesOrdersArray objectAtIndex:indexPath.row];
    NSLog(@"the sales purchase order number is %@",ordersVC.salesOrder.purchaseOrderNumber);

    NSLog(@"done - 140");
    [self.navigationController pushViewController:ordersVC animated:YES];
}
}

因此,在 ITMSyncRecordsTVC 表视图控制器上选择一行时,它会执行上述操作。我得到一个新的 ITMOrdersVC 屏幕,左侧有“后退”栏按钮和 2 个动态生成的栏按钮。我得到了 2 个动态生成的栏按钮,但没有后面。我想一旦我单击该行,它将“返回”到我将 salesOrder 对象传递到的上一个屏幕。我的下一步是检查我是否从 TVC 获取 salesorder 对象,然后加载它。所以基本上只有2个屏幕。第一个屏幕(保存,检查同步记录)。第二个屏幕单击 a.) 返回(转到第一个屏幕..什么都不做)或 b.) 单击第二个屏幕中的一行并填充第一个屏幕而不使用条形按钮。如果不清楚请问我。

4

1 回答 1

1

要使用故事板启动新的表视图控制器,您需要:

  1. 将您的主要场景嵌入导航控制器中。

    在导航控制器中嵌入主场景

  2. 您希望从主控制器到第二个控制器进行推送。所以从视图控制器图标(在主场景下方的栏中)控制拖动到下一个场景:

    添加推送转场

  3. 然后它应该看起来像(注意目标表视图中导航栏的外观):

    目的地有导航栏

  4. 然后选择 segue 并给它一个“故事板标识符”:

    给 segue 故事板 id

  5. 现在,您转换到该场景的代码如下所示:

checkRecordsAction: _

- (void)checkRecordsAction
{
    NSLog(@"the new stack action");

    [self performSegueWithIdentifier:@"PushSegue" sender:self];
}

更新:

顺便说一句,为了充分披露,还有一个替代推送 segue 的方法。如果你给下一个场景本身,一个“故事板ID”,你可以使用下面的代码(显然用"insertNextScenesStoryboardIdHere"你给下一个场景的标识符替换:

- (void)checkRecordsAction
{
    NSLog(@"the new stack action");

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"insertNextScenesStoryboardIdHere"];
    [self.navigationController pushViewController:controller animated:YES];
}

我个人不太喜欢这样,因为您的故事板现在有一个场景漂浮在那里而没有任何转场,您的代码现在已经决定了视图控制器之间的过渡性质与故事板中的所有内容等,但它是另一种方法。

于 2012-12-21T19:05:52.373 回答