我正在实现SwipeMenuViewController,并且当用户开始滚动或点击单元格时,该单元格消失了。我不确定这是由于tableView实施不正确还是SwipeMenuViewController实施不正确造成的。
在滑动/触摸表格之前,您会看到表格已加载数据
但是。一旦我们开始滑动甚至触摸桌子,上一个单元格就会消失:
我已将表视图实现为ViewController,如下所示
var currentUser: User!
var requests = [User]()
var myTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
myTableView = UITableView(frame: CGRect(x: 0, y: 0, width: tableSize.width, height: tableSize.height))
myTableView.register(UINib(nibName: "FriendRequestTableViewCell", bundle: nil), forCellReuseIdentifier: "friendRequest")
myTableView.dataSource = self
myTableView.delegate = self
//myTableView.separatorStyle = .none
myTableView.rowHeight = 103
myTableView.backgroundColor = Colours.flatColour.main.offWhite
self.view.addSubview(myTableView)
}
协议方法:
// MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (self.requests.count == 0) {
self.myTableView.setEmptyMessage("You are up to date!\nYou dont have any notifications ")
} else {
self.myTableView.restore()
}
return requests.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("FriendRequestTableViewCell", owner: self, options: nil)?.first as! FriendRequestTableViewCell
cell.currentUser = currentUser
cell.requestFriendDelegate = self
cell.user = requests[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 103
}
有人对我哪里出错了有想法,我不确定是否丢失任何代码。 SwipeMenuViewController
的示例未显示这种实现方式。我已按照“自述文件”中的内容实施SwipeMenuView
。我有两个ViewController,一个保存SwipeMenuView
,一个保存每个选项卡的表,这是我认为问题出处的控制器。谢谢您的帮助
notificationsViewController类:
class NotificationsViewController: UIViewController, SwipeMenuViewDelegate {
@IBOutlet weak var swipeMenuView: SwipeMenuView! {
didSet {
swipeMenuView.delegate = self
swipeMenuView.dataSource = self
var options: SwipeMenuViewOptions = .init()
options.tabView.style = .flexible
options.tabView.margin = 20.0
options.tabView.additionView.backgroundColor = Colours.flatColour.yellow.lighter //UIColor.black//UIColor.customUnderlineColor
options.tabView.itemView.textColor = Colours.flatColour.main.gray
options.tabView.itemView.selectedTextColor = Colours.flatColour.yellow.lighter //UIColor.black//UIColor.customSelectedTextColor
options.tabView.itemView.font = UIFont(name: "Biotif-Medium", size: 14)!
swipeMenuView.reloadData(options: options)
}
}
var tabTitles: [String] = ["All", "Friend Requests", "Items"]
var requests = [User]()
}
我再次reloadData
填充请求数组并且该数组不为空时。
数据源方法:
extension NotificationsViewController: SwipeMenuViewDataSource {
//MARK - SwipeMenuViewDataSource
func numberOfPages(in swipeMenuView: SwipeMenuView) -> Int {
return tabTitles.count
}
func swipeMenuView(_ swipeMenuView: SwipeMenuView, titleForPageAt index: Int) -> String {
return tabTitles[index]
}
func swipeMenuView(_ swipeMenuView: SwipeMenuView, viewControllerForPageAt index: Int) -> UIViewController {
let vc = NotificationsContentTable()
vc.currentUser = currentUser
vc.tableSize = swipeMenuView.bounds.size
if index == 0 {
vc.requests = requests
}else if index == 1 {
vc.requests = []
}else if index == 2 {
vc.requests = []
}
print("the requests are in = \(vc.requests)")
return vc
}
}
答案 0 :(得分:0)
我弄清楚了我要去哪里。在返回viewControllerForPageAt
中的viewController之前,必须将该viewController作为带有addChild(viewController)
的子级添加。