Add "Swipe to Delete,Edit,..." to TableView CustomCell

Discussion in 'iOS Code Snippets' started by narek adonts, Mar 2, 2015.

  1. narek adonts

    narek adonts Well-Known Member Licensed User

    This is a small snippet showing how to add a "Swipe to ..." function to TableView using ScrollView.

    Code:
    Private Sub AddCell (tbl as TableView)

    For i =0 To 10
    Dim tc As TableCell = Tbl.AddSingleLine("")
         tc.ShowSelection = 
    False
         
    Dim pnlT As Panel
         pnlT=CreateTableCell
         pnlT.Tag=i
         tc.CustomView = pnlT
        
    Next

    End Sub


    Private Sub CreateTableCell As Panel
    Dim SideScroll As ScrollView
    Dim pnl1,pnl2 As Panel ' pnl1 is main panel, pnl2 is the panel visible after swipe (delete,edit,...)


    Dim pnlMain As Panel


    pnl1.Initialize(
    "pnl1")
    pnl2.Initialize(
    "pnl2")
    pnlMain.Initialize(
    "pnlMain")

    pnlMain.Top=
    0
    pnlMain.Left=
    0
    pnlMain.Width=
    100%x
    pnlMain.Height=
    100dip ' Height of Row. Must be same as Tableview.RowHeight

    SideScroll.Initialize(
    "SideScroll",pnlMain.Width,pnlMain.Height)

    pnlMain.AddView(SideScroll,
    0,0,pnlMain.Width,pnlMain.Height)

    SideScroll.Panel.AddView(pnl1,
    0,0,pnlMain.Width,100dip)
    SideScroll.Panel.AddView(pnl2,pnl1.Width,
    0,40%x,100dip'40%x is the size of the "swiping panel". Change it according your needs
    SideScroll.ContentHeight=100dip
    SideScroll.ContentWidth=pnl1.Width+pnl2.Width
    SideScroll.ShowsHorizontalIndicator=
    False
    SideScroll.ShowsVerticalIndicator=
    False
    SideScroll.PagingEnabled=
    True
    SideScroll.Bounces=
    False

    'Below is an example of creating the panels manually
    'you can use also pnl1.LoadLayout function


    pnl1.Color=
    Colors.Cyan
    pnl2.Color=
    Colors.Green

    Dim lbl As Label
    lbl.Initialize(
    "lbl")
    lbl.Text=
    "HELLO"
    lbl.TextColor=
    Colors.Red
    lbl.SizeToFit

    Dim lbl2 As Label
    lbl2.Initialize(
    "lbl2")
    lbl2.Text=
    "HELLO"
    lbl2.TextColor=
    Colors.Red
    lbl2.SizeToFit
    pnl2.AddView(lbl,
    0,0,pnl2.Width,pnl2.Height)
    pnl1.AddView(lbl2,
    0,0,pnl2.Width,pnl2.Height)


    Return pnlMain
    End Sub

    ' We have added one label to each panel with text "HELLO"
    ' now the sub which is handeling event (ex. label click)

    Sub lbl_Click
        
    'GetSenderIndex function is returning the index of the TableCell which was the parent of the label
      
            
    Log(GetSenderIndex(Sender))
        
         
    'You can add the code for this event
    End Sub


    Private Sub GetSenderIndex(senderObj As Object) As Int
    Dim senderCellPanel As Panel
        
    Dim senderCellIndex As Int
        
    'Dim SenderTableCell As TableCell
        Dim tmpobj As Object
        
    Dim l As Object=Senderobj
        
    Dim no As NativeObject=l
       
        
    Dim i As Int
       
        
    Do Until tmpobj Is ScrollView
        tmpobj=no.GetField(
    "superview")
        no=no.GetField(
    "superview")
        i=i+
    1
        
    Loop
        senderCellPanel=no.GetField(
    "superview")
        senderCellIndex=senderCellPanel.Tag
        
    'SenderTableCell= Tbl.GetItems(0).Get(senderCellIndex)
        Return senderCellIndex
    End Sub
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice