我的应用有问题。我正在使用导航控制器和TableView。
所以在我的第一个View中我有一个名为propTableView
的TableView,它是一个属性列表。当我单击一个单元格时,它会将我带到另一个ViewController,其中包含另一个名为propDetailTableView
的TableView。我从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
,我必须再次点击{{1 }}返回Back
。
我点击一个单元格(我之前点击了Anti-Douleur,但现在我选择了Actif-Cosémtique):
显示如下:
然后一秒钟后:
答案 0 :(得分:1)
抱歉,我知道问题所在。
就是这么简单:
prepareForSegue在设置UIView之前运行。
它只涉及视图控制器,而不是视图。
你要做的是......
在segue期间设置一些信息......
-(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.
}
就这么简单!
你必须在每一种情况下都这样做。
你最终得到的变量名称如“whenYouCanUseThisValue”....
在您的情况下,您需要一个名为:
的属性@property (strong) NSString *useThisTitleLaterWhenYouAreLoading;
BTW不要忘记,如果它是一个非类属性,那就是“assign”
@property (assign) CGPoint afterLoadingHereIsThePosition;
@property (assign) CGFloat onceYouLoadUseThisAlpha;