2017-12-27 58 views
0

나는 누군가가 나를 도울 수 있기를 바랍니다. 새로운 방식으로 테이블 뷰를 만들려고하므로 새로운 데이터가 맨 아래에 테이블 뷰의 맨 위에 추가됩니다. 아래 사진을 보면 처음에 d를 입력하고 d를 마지막으로 입력했는데 d, c, b, a로 표시되도록 반대 방향으로 입력하고 싶습니다. 전자를 추가하면 맨 위에 나타납니다. .어떻게 새롭게 추가 된 셀이 버튼이 아닌 상단에 나타나도록 테이블 뷰를 뒤집을 수 있습니까?

이미 그냥 거꾸로 내의 tableview 세포를 설정하는

tableViewOutlet.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi)) 

and 

cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)); 

작업을 시도하고 괜찮 았는데! 유일한 문제는 내 tableview가 이제 화면의 하단에서 시작되며 페이지가 가득 찼을 때 위로 스크롤해야하고 아래로 스크롤하지 않아야한다는 것입니다.

Screenshot of my situation (here)

나는 거기에 누군가가 나에게 손을 줄 수 있기를 바랍니다, 그리고 저를 도와주세요!

안부 Kristofer

+0

이 0 인덱스마다에 새 개체를 추가 할 수 있습니다. –

+0

셀의 순서가 문제가 아니라면 코어 데이터의 각 엔티티에 (또는 SH_Khan이 가리키는 점진적 ID) 'NSDate'타임 스탬프를 할당하고이를 기반으로 정렬하는 것이 일반적입니다 . 문제가 UI 인 경우 여러 가지 가능한 해결책이있는 광범위한 주제입니다. – n00bProgrammer

답변

0

보십시오 당신에게 모델 배열을 정수 값을 추가하고 그래서 당신은 데이터가 제공되는 방법을 변경할 수 없습니다 가정이

struct mainItem { 

    var id: Int 
    var userNumber: String 
    var address:String 


init(id: Int, userNumber: String, address: String) 
{ 


    self.id = id 
    self.userNumber = userNumber 
    self.address = address 


} 
} 


var arrRet = [mainItem]() 


    arrRet = arrRet.sorted(by: { 


     var m1 = Int($0.id) 

     var m2 = Int($1.id) 


     return m1! > m2! 


    }) 
+0

안녕하세요 Khan 내 응용 프로그램 coreData 그래서 일종의 내가 값, 날짜, 가격, 리터 및 km있는 자동차의 엔티티입니다 사용합니다.하지만 int의 형식으로 ID를 추가하고 정렬 할 수 있는지 알아볼 수 있습니다. 시험해보기 위해 고맙다! –

+0

당신은 데이터를 정렬 된 (정방향 또는 역방향) 순서로 원하는 방식으로 입력하는 것과 반대가 아닌 것으로 가정합니다. 예를 들어 이것이 A, G, E, D로 입력 되었다면, D, E, G, A와 같이 테이블에 정렬되어야 할 것이 없습니다. –

+0

추가 된 항목의 ID가 높아져 내림차순으로 정렬하면 셀 위쪽에 표시됩니다. –

0

을 내림차순으로 정렬 내림차순 배열을 정렬하는 (즉, 정렬) 그러면 액세스 방법의 순서를 변경할 수 있습니다.

그래서이 변경이에

let data = dataArray[indexPath.row] 

을 :

let data = dataArray[dataArray.count - indexPath.row + 1] 

이렇게 당신은 단지 주변의 데이터 배열을 다른 방법으로 접근하고 있습니다. 그래서 당신은

indexPath.row = 0 --- (5 - 0 - 1) = 4 
indexPath.row = 1 --- (5 - 1 - 1) = 3 
indexPath.row = 2 --- (5 - 2 - 1) = 2 
indexPath.row = 3 --- (5 - 3 - 1) = 1 
indexPath.row = 4 --- (5 - 4 - 1) = 0 

:

그래서 나는 다음과 같이 계산 [ "A", "B", "C", "D", "E"] 내 방법을 사용하는 테스트 dataArray이 배열에 액세스하는 순서를 바꿨습니다.

+0

아니, 수학이 정확하고 Xcode에서 실행중인 예제가 있습니다. 'dataArray.count - indexPath.row - 1'은'(dataArray.count - indexPath.row) -와 동일한'dataArray.count - (indexPath.row - 1)'과 동일하다. 1 '. 내가 사용하고있는 예제 데이터로 질문을 업데이트 할 것이다. (수학 오류에 대한 코멘트가 있었지만 지금은 사라졌습니다.) –

+0

핵심 데이터를 사용하기 때문에 indexPath.row는 나를위한 값이 아닙니다. indexPath.row를 호출하면 (엔티티 : Bilen, ID : 0xd000000000a40000 ; 데이터 : { dato = c; id = 0; 킬로미터 = 3; 리터 = 3; 프리 = 3; –

+0

나는 그다지 이해하지 못한다. 내가 말했던 그 라인은 indexPath.row를 사용하는 것으로 바꾼다. 예를 들면 –

0

당신은 스위프트 배열의 반전() 방법을 사용할 수 있습니다합니다 (그 같은 변화에 대해하지 마십시오 혼란은 상처의 세계가 될 것이다). 사용자가 문자열을 입력하면

것은, 당신은 dataArray 해당를 추가합니다 : -

var dataArray: [String] = ["a", "b", "c", "d"] 
dataArray.append("e") 

그리고 cellForRowAtIndexPath에서 : -

let data = dataArray.reversed()[indexPath.row] 
cell.textLabel!.text = data