PropDetailViewController

PropDetailViewController

我的应用程序有问题。我正在使用导航控制器和TableView。
因此,在我的第一个视图中,我有一个名为propTableView的TableView,它是属性列表。当我单击一个单元格时,它带我到另一个名为propDetailTableView的TableView的另一个ViewController。我从PropViewControllerPropDetailViewController执行Segue:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *sectionTitle = [aromaPropSectionTitles objectAtIndex:indexPath.section];
    NSArray *sectionProp = [propData objectForKey:sectionTitle];
    propName = [sectionProp objectAtIndex:indexPath.row];
    [self performSegueWithIdentifier:@"PropDetail" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"PropDetail"]) {
        PropViewController *propView = segue.destinationViewController;
        propView.title = propName;
        SQLmanager *sqlManager = [[SQLmanager alloc] initDatabase:@"prop_max.sqlite3"];
        NSString *propRequest = [NSString stringWithFormat:@"SELECT id_prop FROM prop_max WHERE prop_name_fr LIKE '%@'", propName];
        NSLog(@"propRequest = %@", propRequest);
        NSString *propId = [sqlManager getString:propRequest];
        NSLog(@"propId = %@", propId);
    }
}


现在,我只是更改导航栏的标题。但是这种行为是不正常的。而不是显示带有新标题的PropDetailViewController,而是显示带有优先标题的新PropDetailViewController(如果这是我第一次单击单元格,则不显示标题),然后显示带有标题的PropDetailViewController
没问题,但是当我单击左上角的Back时,它将带我回到具有旧标题的PropDetailViewController,并且我必须再次单击Back来返回到PropViewController

我单击一个单元格(我之前单击过Anti-Douleur,但是现在选择Actif-Cosémtique):


它显示如下:


然后一秒钟后:

最佳答案

抱歉,我知道是什么问题。

就这么简单:

prepareForSegue会在设置UIView之前运行。

它仅涉及视图控制器,而不涉及视图。

你要做的是...

在搜索过程中设置一些信息。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
  {
  if ([[segue identifier] isEqualToString:@"idUber"])
    {
    Uber *uber = [segue destinationViewController];
    uber.classnameToUse = .. whatever ...;
    }
  }


然后在另一个类中……稍后,当viewDidLoad运行时,再使用该信息。

注意-viewDidAppear可能更合适,具体取决于您的情况

-(void)viewDidLoad
  {
  [self loadThisMainSection:self.classnameToUse];

  // note that back during the segue you have CORRECTLY SET .classnameToUse
  // that was a long time ago.  but we only use it now.
  }


就这么简单!

您必须在每种segue情况下都这样做。

您最终会得到诸如“ whenYouCanUseThisValue”之类的变量名。

在您的情况下,您需要一个名为:

@property (strong) NSString *useThisTitleLaterWhenYouAreLoading;


顺便说一句,不要忘记,如果它是非类属性,则是“赋值”

@property (assign) CGPoint afterLoadingHereIsThePosition;
@property (assign) CGFloat onceYouLoadUseThisAlpha;

10-08 12:28