#iphone #ios #cocoa-touch
#iPhone #iOS #cocoa-touch
Вопрос:
В моем приложении на основе просмотра оно включает в себя три представления.Первый вид (основной вид) вызывает второй вид.Второй просмотр вызывает третий просмотр (подробный просмотр). Я хочу добавить функцию home в третьем представлении, чтобы вернуться к первому виду (основной вид). В настоящее время я добавляю кнопку «Домой» в третьем представлении.Но я не знаю, как написать эту функцию. Ниже приведен мой код:
//In First view(main view)
//call second view(list view) in button click
-(IBAction) doctorList:(id)sender
{
if(self.doctorViewController==nil)
{
DoctorViewController *doctorView=[[DoctorViewController alloc] initWithNibName:@"DoctorViewController" bundle:[NSBundle mainBundle]];
self.doctorViewController=doctorView;
[doctorView release];
}
self.view addSubview:self.doctorViewController.view];}
}
//In second View(list view)
//Call third view in table cell click
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
DoctorItem *physician=[[DoctorItem alloc]init];
physician=(DoctorItem*)[self.tableDataList objectAtIndex:indexPath.row];
DoctorDetail *detail=[[DoctorDetail alloc]init];[tableView.superview addSubview:detail.view];
[physician release];
}
На третьем представлении есть кнопка с надписью «Home»
Когда пользователь нажимает эту кнопку, я хочу добавить возврат к первому виду (основной вид). Я не знаю, как это сделать.
Ответ №1:
Я не видел никаких упоминаний об UINavigationControllers в публикации Phoenix… итак, если бы я исправлял этот код, я бы создал метод IBAction следующим образом:
- (IBAction) homeButtonPressed: (id) sender
{
// and remove the subviews
NSArray * subviews = [self.view subviews];
for(UIView * aSubview in subviews)
{
// this removes and releases the subviews you allocated
[aSubview removeFromSuperview];
}
}
и подключите действие кнопки к этому методу.
Кроме того, я бы рекомендовал подклассы UIView, а не UIViewController для DoctorView и DoctorViewController. Вам не нужен дополнительный багаж, который приносят UIViewControllers, если вы просто добавляете вложенные представления в корневой контроллер представления.
Комментарии:
1. Я тестирую ваш код. Это не может решить мою проблему. Он удаляет все вложенные представления пользовательского интерфейса только из третьего представления. Я имею в виду, что я хочу вернуться к основному виду (первому виду), когда пользователь нажимает кнопку «Домой».
2. если вы поместите этот метод в свой основной корневой контроллер, он удалит все вложенные представления (второе и третье) из вашего корневого (первого) контроллера представления. Но да, в целом, предпочтительнее использовать UINavigationController и нажимать / нажимать. 🙂
3. Я поместил этот метод в свой основной корневой контроллер. Я не знаю, как вызвать этот метод из третьего представления.
4. Я вызвал этот метод через класс AppDelegate. Но он очищает все вложенные представления, включая текстовые представления, метки. На самом деле я хочу удалить только второй и третий просмотр. Как я могу узнать, что это вложенное представление является вторым или третьим представлением?
5. Я нашел решение. Для проверки типа представления можно использовать метод isKindOfClass.’code’ if([some_object isKindOfClass:[A_Class_Name class]]){}
Ответ №2:
Поскольку вы просто перемещаетесь между контроллерами представления, вы можете просто выполнить a popToRootViewController
в последнем контроллере представления, и это вернет вас к rootViewController
(вашему основному представлению).
Ответ №3:
Феникс Кьяу,
Попробуйте это,
[self.navigationController pushViewController:homeView animated:YES];
Здесь HomeView — это ваш экземпляр HomeViewController (куда бы вы ни захотели перейти)..
Ответ №4:
Пожалуйста, попробуйте использовать это…..
[self.view.superview removeFromSuperview];
Ответ №5:
Попробуйте это,
Это сработало для меня
[self.view addSubview:firstViewController.view];
или попробуйте это
[self presentModalViewController:firstViewController animated:YES]; // this is deprecated in ios6.0