BLE로부터받은 주변 장치를로드하는 tableview가 있습니다. 이 NSMutableArray
은 appDelegate에서 유지 관리됩니다. 애플 리케이션에 새로운 주변 장치가 수신 될 때마다이를 어레이에 추가한다.tableview : cellForRowAtIndexPath가 호출되지 않습니다.
제 문제는 모든 것이 처음 실행될 때 제대로 작동하고 그에 따라 테이블이 업데이트되며 잠시 동안 앱을 사용한다는 것입니다. 그런 다음 (CoreData, UserDefaults in app) 내 앱을 재설정하고 초기 화면으로 돌아갑니다.
은 내가 응용 프로그램 데이터를 재설정하고 다시 내가있는 tableview의 주변을 표시 화면에 와서 내 응용 프로그램
class func showStartScreen() {
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let nav = storyboard.instantiateInitialViewController()
(UIApplication.sharedApplication().delegate)!.window!!.rootViewController = nav
(UIApplication.sharedApplication().delegate)!.window!!.makeKeyAndVisible()
}
의 초기 화면으로 돌아 오기 위해 다음 코드를 사용하여, 그것은 UPDAT하지 않습니다 . 주변 장치가 배열에 추가 된 것을 볼 수 있지만 테이블 뷰를 다시로드하면 tableview:cellForRowAtIndexPath
이 호출되지 않습니다. 하나의 더미 셀을 테이블에 추가하려고 시도했지만 그 시점에서 더미 셀에 대해서만 tableview:cellForRowAtIndexPath
이 제대로 호출되었습니다.
numberOfRowsInSection
은 올바른 값을 반환하고 내 데이터 소스와 델리게이트도 올바르게 설정됩니다. ScanVC에서
func discoveredPeripheral(peripheral: CAPeripheral) {
print("added peripheral")
var isDuplicate:Bool = false
for object in scannedPeripherals! {
if object is CAPeripheral {
let newPeripheral = object as! CAPeripheral
// Need to add check of nil
if newPeripheral.peripheral_UUID == peripheral.peripheral_UUID {
isDuplicate = true
}
}
}
if (!isDuplicate) {
self.scannedPeripherals?.addObject(peripheral)
}
}
:
func discoveredPeripheral(peripheral: CAPeripheral) {
dispatch_async(dispatch_get_main_queue()) {
self.peripheralTableView.reloadData()
}
}
희망은 내가 잘 설명했다 나는 목록을 스캔이 BLE 주변 AppDelegate에에서
시작될 때마다 선택을 취소합니다. 표시 할 데이터가 명확하게 표시 될 때 tableview:cellForRowAtIndexPath
이 호출되지 않는 이유는 무엇입니까?
테이블 뷰의 델리게이트 및 데이터 소스를 설정했는지 확인하십시오. – iPatel
테이블을 다시로드하고 있습니까? 적절한 코드 스 니펫을 게시하십시오. – mikep
@mikep는 주변 장치를 추가하고 데이터를 다시로드하는 코드를 추가했습니다. –