Удалить представление одним нажатием кнопки

#ios #swift

#iOS #swift

Вопрос:

Я использую следующий код для загрузки моей таблицы с помощью collection.

 self.window = UIWindow(frame: CGRect(x:40, y:120, width:self.view.bounds.width-100, height:self.view.bounds.height-200))
self.window!.backgroundColor = UIColor.whiteColor()

let mainController : CollectionViewController = CollectionViewController(nibName: "CollectionViewController", bundle: nil)
myController.TableHeaderArray = TableHeaders
let ApiResponse = self.dataTableViewdictParams(apiUrl)
 myController.UMIDDataArray = ApiResponse[0] as! NSMutableArray
myController.TableDataArray = ApiResponse[1] as! NSMutableArray
self.window!.rootViewController = myController
self.window!.makeKeyAndVisible()
  

Я хочу удалить эту таблицу при нажатии кнопки и загрузить другое представление. При нажатии кнопки загружается другое представление, но я не могу удалить эту таблицу UIWindowView. Как я могу это удалить?

Редактировать:

Добавлен код, который я пробовал:

 function loadanotherView()
{
/// I tried these three codes but none worked for me
self.window?.removeFromSuperview() // code 1
self.window?.rootViewController?.removeFromParentViewController() // code 1
self.window?.hidden = true // code 2

let frame = CGRect(x:0, y:-20, width:self.view.bounds.width, height:self.view.bounds.width)
WView.frame=frame
let url = NSURL(string:"urlForTheWebView")
let req = NSURLRequest(URL:url!)
self.webView!.loadRequest(req)
self.view.addSubview(WView)

} 
  

Комментарии:

1. обновите свой вопрос с помощью вашего метода удаления кнопки click

2. добавлен метод нажатия кнопки

3. tableView.dismissViewController()

4. где находится код, с помощью которого вы удаляете tableview или скрываете tableview?

5. Почему вы возитесь с окном? Рассмотрите возможность использования навигационного контроллера или чего-то подобного.

Ответ №1:

Не использовать

 self.window!.rootViewController = myController
  

Используйте это

 self.window?.addSubview(myController.view)
  

И вместо того, чтобы использовать

 self.window?.removeFromSuperview() // code 1
self.window?.rootViewController?.removeFromParentViewController() // code 1
self.window?.hidden = true // code 2
  

Используйте это,

 myController.view.removeFromSuperview() // If Button on the another viewcontroller
  

или

 self.view.removeFromSuperview() // If Button on the myController
  

Потому что, если вы создадите MyController как root, он не может быть удален из SuperView. Итак, добавьте это в качестве подвида.

Комментарии:

1. Когда я использую — self.window? .addSubview (MyController.view), это выдает ошибку.

2. В нем говорится — UICollectionView получил атрибуты макета для ячейки с несуществующим путем к индексу: <NSIndexPath: 0xc000000000000016>

3. 1-й скажите мне, что такое MyController и MainViewController?