Как установить первую строку ячейки табличного представления в боковой панели, отличную от всех других строк - swift - PullRequest
0 голосов
/ 22 ноября 2018

Я создал боковое меню, как показано в this .., и я хочу, чтобы изображение отображалось только для первой строки с меткой полного имени, чтобы, если кто-нибудь нажмет на изображение в первой строке, разрешитеПользователь выбирает изображение из галереи.Более того, все остальные строки должны содержать только текст, который перенаправляется на другой контроллер представления.Пожалуйста, предложите любую ссылку или любой фрагмент кода, чтобы получить изображение только в первом ряду бокового меню с кнопкой, чтобы выбрать изображение из галереи.Вот мой код

var arrdata = ["Full name", "Home", "Favourite", "Logout"]
var arrimg = [#imageLiteral(resourceName: "hello.png"), #imageLiteral(resourceName: "hello.png"), #imageLiteral(resourceName: "hello.png"), #imageLiteral(resourceName: "hello.png")]

    @IBOutlet var sidebar: UITableView!
    @IBOutlet var sideview: UIView!

        var isSideViewOpen: Bool = false

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrdata.count
    }

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
        cell.img.image = arrimg[indexPath.row]
        cell.lbl.text = arrdata[indexPath.row]
        return cell
    }

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.row == 1
        {
            let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
            let HomeViewController = storyBoard.instantiateViewController(withIdentifier: "Home") as! HomeViewController
            self.present(HomeViewController, animated:true, completion:nil)
        }

        if indexPath.row == 3
        {
            let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
            let ViewController = storyBoard.instantiateViewController(withIdentifier: "Login") as! ViewController
            self.present(ViewController, animated:true, completion:nil)
        }
    }
   override func viewDidLoad() {
        super.viewDidLoad()
        sideview.isHidden = true
        sidebar.backgroundColor = UIColor.groupTableViewBackground
        isSideViewOpen = false
    }

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Эй, я обновил ответ, пожалуйста, проверьте.Итак, если вам нужны два разных представления, вам нужно создать 2 разных UITableViewCells.

Одна ячейка будет содержать ваши imageView и Label, а другая - только кнопку.

Зарегистрируйте оба пера ячейки, используя метод

tableView.register(UINib(nibName: "your_nib_name", bundle: nil), forCellReuseIdentifier: "your_cell_identifier").

Теперь просто следуйте этому методу в методе cellForRowAt

if indexPath.row == 0 {
    let cell = tableView.dequeueReusableCell(withIdentifier: "your_image_label_cell", for: indexPath) as! your_image_label_cell_className

    //your code here 
    return cell
} else {
    let cell = tableView.dequeueReusableCell(withIdentifier: "your_button_cell_identifier", for: indexPath) as! your_button_cell_className

   //your code here  
   return cell
}

Что я сделал, так это проверил, что если его 1-я строка indexpath.row == 0, она вернет метку с ячейкой изображения, иначе для всех остальных строк онавернет ячейку с кнопкой, к которой вы можете добавить событие действия касания для навигации по разным экранам.

Аналогично, если вы хотите другое касание в первой строке, вы используете indexPath.row == 0 в методе didSelectRowAtи вы сделали.Надеюсь, это было полезно.

0 голосов
/ 22 ноября 2018

Конфиденциальность - Описание использования библиотеки мультимедиа
Конфиденциальность - Описание использования камеры

1) Сначала добавьте оба этих ключа в файл Info.plist ...
2) Затем добавьте кнопку на вашемпросмотр изображений в вашем пользовательском интерфейсе ... и наложите на них ограничения ...
1) вертикальный центр при просмотре изображения
2) такая же высота при просмотре изображения.
3) такая же ширина при просмотре изображения)

0 голосов
/ 22 ноября 2018

Для начала вам понадобится ваша пользовательская ячейка с изображением и текстом.

Руководство для пользовательских ячеек

После этого я бы порекомендовал иметь список дляконфигурация типа

let shouldShowImage = [true, false, false, false, ...]

В вашей функции cellForRowAt вы должны проверить, должна ли ваша ячейка отображать изображение, например

if shouldShowImage[indexPath.row] {

    cell.img.image = arrimg[indexPath.row]
} else {

    cell.img.isHidden = true
}

cell.lbl.text = arrdata[indexPath.row]
...