我的应用程序有问题。我正在使用导航控制器和TableView。
因此,在我的第一个视图中,我有一个名为propTableView
的TableView,它是属性列表。当我单击一个单元格时,它带我到另一个名为propDetailTableView
的TableView的另一个ViewController。我从PropViewController
到PropDetailViewController
执行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;