2010-04-14 68 views
2

我在iPad上以橫向方式觀看控制器時遇到了兩個問題。iPad:彈出視圖中的表不滾動以顯示選定的行

(1)我有兩個彈出窗口,它們包含表格。表格應滾動到特定的行以反映主視圖中的選擇。相反,表格會向下滾動一些,但實際選定的行仍然不在屏幕上。

(2)我所有的動作片拿出320

寬度在Interface Builder中,我所有的意見都在橫向創建的。只有主窗口不是,但我沒有看到改變它的方法。

我的配置:一經推出,我得到了我的主窗口和主視圖 - 控制視圖以下座標:在傳訊的時候

Window frame {{0, 0}, {768, 1024}} mainView frame {{0, 0}, {748, 1024}} 

之後,所有其他視圖顯示這些座標(加載時,但被前提交):

frame of keysig {{0, 0}, {1024, 768}} 
    frame of instrumentSelect {{20, 0}, {1024, 768}} 
    frame of settings {{0, 0}, {467, 300}} 

在我所有的viewControllers,我到shouldAutorotateToInterfaceOrientation與迴應:

  return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
         (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 

一切(幾乎)都按預期發揮作用。該應用程序啓動到兩種景觀模式之一。視圖(和視圖控制器)顯示它所屬的所有內容,並按預期在整個屏幕上進行工作。但是,我仍然有兩個問題。

問題1:我有兩個包含足夠長的表的彈出窗口,可以在屏幕外運行。表格應滾動到選定的行。他們做滾動,即他們不在視覺上開始行1,但他們不滾動足夠實際顯示選定的行。

alt text http://idisk.mac.com/mahboud//Public/keysig.png

alt text http://idisk.mac.com/mahboud//Public/instrumentlist.png

這似乎像一個UITable內部矩形被數錯誤創建並保持這種方式,但我已經檢查兩個的UITableView的滾動視圖內容座標和他們似乎是合理的。

問題2:我想是因爲我的actionsheets拿出320的寬度,我只能假設,iPad可以讓actionSheets只有320或480的寬度,因爲它在某種程度上認爲這是有關問題1,屏幕以縱向模式定向,它使用較窄的寬度。

你有它。我不敢相信我仍然陷在方向問題上。我發誓蘋果並不容易有一個景觀應用程序。有任何想法嗎?

+1

這是一個很好的問題。你顯然花了一些時間。然而,你把實際的問題埋在身體裏。人們不得不閱讀幾百個字才能清楚你的問題是什麼。將來,將問題放在最上面,然後再詳細說明。如果他們不需要努力弄清楚你問的是什麼問題,更多的人會閱讀並回答你的問題。我已經將問題編輯爲更易於閱讀的格式。 – TechZen 2010-04-15 13:26:07

+0

感謝您花時間澄清。 – mahboudz 2010-04-16 09:34:28

回答

0

我有點想通了。如果我參加了

[self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionNone animated:YES]; 

退出了-viewDidAppear或-viewWillAppear的,而是把它放在我-presentPopoverFrom之後...,那麼它的工作原理:

[popController presentPopoverFromBarButtonItem:keySigBBItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

[keySignatureTableVC.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 

什麼是必須發生的是,-viewDidAppear和-viewWillAppear都必須獲取調用presentPopover ......重新調整或重新定位視圖前。我在這兩種方法中所做的不是在正確的框架或邊界上工作。滾動後似乎工作。