我創建了一個通用的主 - 細節應用程序。我有一個自定義類(MasterViewController類)內的表視圖。這是一個UITableViewController類。 使用Storyboard,我在iPhone桌面視圖中創建了一個自定義單元格。自定義單元格包含3個標籤和1個圖像。 在StoryBoard中,此表視圖數據源和委託被設置爲MasterViewController類。 我的自定義表格視圖單元格在屬性檢查器的視圖部分中具有「用戶交互已啓用」。 在我的MasterViewController類中,像'numberOfSectionsInTableView'這樣的UITableViewDataSource方法工作正常。 我在表視圖和詳細視圖之間定義了一個seque。 當我運行應用程序並在表格視圖中選擇一個單元格時,didSelectRowAtIndexPath不會爲iPhone調用。我的prepareForSegue方法執行併發生segue。定製單元didSelectRowAtIndexPath不叫
我已閱讀了相當多的didSelectRowAtIndexPath帖子沒有被執行,但我一直無法解決我的問題。
任何提示將非常感激。
我的自定義單元格標識符是ConversationCell。 segue標識符是ShowConversationDetails。 我使用numberOfRowsInSection的第一行上的斷點進行調試,並且此方法從不輸入。
segue工程和詳細視圖顯示我的標籤與'你好'文本。
一些代碼:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
//NSLog(@"Rows %lu",(unsigned long)[sectionInfo numberOfObjects]);
return [sectionInfo numberOfObjects];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ConversationCell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
[[self.fetchedResultsController sections] count]);
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
self.detailViewController.detailItem = object;
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ShowConversationDetails"]) {
NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];
Event *e = nil;
e = [self.fetchedResultsController objectAtIndexPath:selectedIndex];
UIViewController *destinationViewController = [segue destinationViewController];
[segue.destinationViewController setLabel:@"Hello"];
}
}
MASTERVIEWCONTROLLER: 這是我界面以上;
@interface MasterViewController : UITableViewController <NSFetchedResultsControllerDelegate,ASIHTTPRequestDelegate,UITableViewDelegate, UITableViewDataSource>
{
NSMutableArray *eventsArray;
}
這可能是我的問題的線索。當我添加以下代碼prepareForSeque彷彿當prepareForSeque正在執行的行不再被選中
NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:selectedIndex];
NSString *messageTableID = [[object valueForKey:@"messagetableid"] description];
的selectedIndex是空的。
順便說一句,爲了安全起見,我從模擬器中刪除了應用程序,然後在項目上執行了清理並且沒有任何變化。
添
幾行代碼? – Larme 2013-03-13 17:21:39
那麼好吧,我懷疑你的手機 - 'ConversationCell'有一個頂部的視圖,不會讓觸摸通過它到達表格視圖單元格。如果您正在使用cellforRow,HeightForRowAtIndex等方法,並且您說您在使用DidSelectRowAtIndexPath時遇到問題,那麼它必須歸因於最頂層視圖,它不會讓觸摸傳遞到單元格。你所能做的就是隻需在表格視圖單元格中設置'SetUserInterActionEnabled:NO'到你擁有它的視圖,然後通過點擊行來測試它。不要關閉單元的交互。乾杯。 :) – 2013-03-13 17:42:41
裏諾,謝謝你的提示。我忽略了提及我已取消選中「自定義單元格的每個元素的」User Interaction Enabled「。自定義單元格的交互仍然保持開啓狀態。不幸的是,所有這些,DidSelectRowAtIndexPath不會被調用。 – 2013-03-13 17:48:36