Skip to content

Commit 4163b7a

Browse files
committed
Use the NSFetchedResultsController display Message
fix the shouldLoadMoreMessagesScrollToTop bug for message tableView.
1 parent 1e76e8f commit 4163b7a

11 files changed

Lines changed: 257 additions & 303 deletions

File tree

Example/MessageDisplayKitCoreDataExample/MessageDisplayKitCoreDataExample.xcodeproj/project.pbxproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
AB5C7E561937FE7000FA7D5B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AB5C7E551937FE7000FA7D5B /* AppDelegate.m */; };
1717
AB5C7E591937FE7000FA7D5B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB5C7E571937FE7000FA7D5B /* Main.storyboard */; };
1818
AB5C7E5C1937FE7000FA7D5B /* MessageDisplayKitCoreDataExample.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = AB5C7E5A1937FE7000FA7D5B /* MessageDisplayKitCoreDataExample.xcdatamodeld */; };
19-
AB5C7E5F1937FE7000FA7D5B /* MasterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB5C7E5E1937FE7000FA7D5B /* MasterViewController.m */; };
2019
AB5C7E641937FE7000FA7D5B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AB5C7E631937FE7000FA7D5B /* Images.xcassets */; };
2120
AB5C7E6B1937FE7000FA7D5B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB5C7E6A1937FE7000FA7D5B /* XCTest.framework */; };
2221
AB5C7E6C1937FE7000FA7D5B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB5C7E431937FE7000FA7D5B /* Foundation.framework */; };
@@ -245,6 +244,7 @@
245244
AB5C80491938017700FA7D5B /* tabbarBkg@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AB5C7FB31938017700FA7D5B /* tabbarBkg@2x.png */; };
246245
AB5C804A1938017700FA7D5B /* WeChat@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AB5C7FB41938017700FA7D5B /* WeChat@2x.png */; };
247246
AB5C804B1938017700FA7D5B /* TableViewBackgroundImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AB5C7FB51938017700FA7D5B /* TableViewBackgroundImage@2x.png */; };
247+
ABC47CFB193922EB00ECADEA /* MDKMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC47CFA193922EB00ECADEA /* MDKMessage.m */; };
248248
/* End PBXBuildFile section */
249249

250250
/* Begin PBXContainerItemProxy section */
@@ -271,8 +271,6 @@
271271
AB5C7E551937FE7000FA7D5B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
272272
AB5C7E581937FE7000FA7D5B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
273273
AB5C7E5B1937FE7000FA7D5B /* MessageDisplayKitCoreDataExample.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MessageDisplayKitCoreDataExample.xcdatamodel; sourceTree = "<group>"; };
274-
AB5C7E5D1937FE7000FA7D5B /* MasterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MasterViewController.h; sourceTree = "<group>"; };
275-
AB5C7E5E1937FE7000FA7D5B /* MasterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MasterViewController.m; sourceTree = "<group>"; };
276274
AB5C7E631937FE7000FA7D5B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
277275
AB5C7E691937FE7000FA7D5B /* MessageDisplayKitCoreDataExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MessageDisplayKitCoreDataExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
278276
AB5C7E6A1937FE7000FA7D5B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
@@ -502,6 +500,8 @@
502500
AB5C7FB31938017700FA7D5B /* tabbarBkg@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tabbarBkg@2x.png"; sourceTree = "<group>"; };
503501
AB5C7FB41938017700FA7D5B /* WeChat@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "WeChat@2x.png"; sourceTree = "<group>"; };
504502
AB5C7FB51938017700FA7D5B /* TableViewBackgroundImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TableViewBackgroundImage@2x.png"; sourceTree = "<group>"; };
503+
ABC47CF9193922EB00ECADEA /* MDKMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDKMessage.h; sourceTree = "<group>"; };
504+
ABC47CFA193922EB00ECADEA /* MDKMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDKMessage.m; sourceTree = "<group>"; };
505505
/* End PBXFileReference section */
506506

507507
/* Begin PBXFrameworksBuildPhase section */
@@ -569,12 +569,12 @@
569569
AB5C7E541937FE7000FA7D5B /* AppDelegate.h */,
570570
AB5C7E551937FE7000FA7D5B /* AppDelegate.m */,
571571
AB5C7E571937FE7000FA7D5B /* Main.storyboard */,
572-
AB5C7E5D1937FE7000FA7D5B /* MasterViewController.h */,
573-
AB5C7E5E1937FE7000FA7D5B /* MasterViewController.m */,
574572
AB5C7F111937FFCC00FA7D5B /* XHDemoWeChatMessageTableViewController.h */,
575573
AB5C7F121937FFCC00FA7D5B /* XHDemoWeChatMessageTableViewController.m */,
576574
AB5C7E631937FE7000FA7D5B /* Images.xcassets */,
577575
AB5C7E5A1937FE7000FA7D5B /* MessageDisplayKitCoreDataExample.xcdatamodeld */,
576+
ABC47CF9193922EB00ECADEA /* MDKMessage.h */,
577+
ABC47CFA193922EB00ECADEA /* MDKMessage.m */,
578578
AB5C7E4C1937FE7000FA7D5B /* Supporting Files */,
579579
);
580580
path = MessageDisplayKitCoreDataExample;
@@ -1259,8 +1259,8 @@
12591259
isa = PBXSourcesBuildPhase;
12601260
buildActionMask = 2147483647;
12611261
files = (
1262-
AB5C7E5F1937FE7000FA7D5B /* MasterViewController.m in Sources */,
12631262
AB5C7F131937FFCC00FA7D5B /* XHDemoWeChatMessageTableViewController.m in Sources */,
1263+
ABC47CFB193922EB00ECADEA /* MDKMessage.m in Sources */,
12641264
AB5C7E561937FE7000FA7D5B /* AppDelegate.m in Sources */,
12651265
AB5C7E5C1937FE7000FA7D5B /* MessageDisplayKitCoreDataExample.xcdatamodeld in Sources */,
12661266
AB5C7E521937FE7000FA7D5B /* main.m in Sources */,
@@ -1495,6 +1495,7 @@
14951495
AB5C7E7D1937FE7000FA7D5B /* Release */,
14961496
);
14971497
defaultConfigurationIsVisible = 0;
1498+
defaultConfigurationName = Release;
14981499
};
14991500
AB5C7E7E1937FE7000FA7D5B /* Build configuration list for PBXNativeTarget "MessageDisplayKitCoreDataExampleTests" */ = {
15001501
isa = XCConfigurationList;
@@ -1503,6 +1504,7 @@
15031504
AB5C7E801937FE7000FA7D5B /* Release */,
15041505
);
15051506
defaultConfigurationIsVisible = 0;
1507+
defaultConfigurationName = Release;
15061508
};
15071509
/* End XCConfigurationList section */
15081510

Example/MessageDisplayKitCoreDataExample/MessageDisplayKitCoreDataExample/AppDelegate.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#import "AppDelegate.h"
1010

11-
#import "MasterViewController.h"
11+
#import "XHDemoWeChatMessageTableViewController.h"
1212

1313
@implementation AppDelegate
1414

@@ -20,7 +20,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
2020
{
2121
// Override point for customization after application launch.
2222
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
23-
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
23+
XHDemoWeChatMessageTableViewController *controller = (XHDemoWeChatMessageTableViewController *)navigationController.topViewController;
2424
controller.managedObjectContext = self.managedObjectContext;
2525
return YES;
2626
}

Example/MessageDisplayKitCoreDataExample/MessageDisplayKitCoreDataExample/Base.lproj/Main.storyboard

Lines changed: 29 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,46 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="12E55" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="rS3-R9-Ivy">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="12E55" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="B4K-zk-qmA">
33
<dependencies>
44
<deployment defaultVersion="1536" identifier="iOS"/>
55
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
66
</dependencies>
77
<scenes>
8+
<!--Demo We Chat Message Table View Controller - 华捷微信-->
9+
<scene sceneID="Qw4-RM-yAj">
10+
<objects>
11+
<viewController id="W6F-tC-tHJ" customClass="XHDemoWeChatMessageTableViewController" sceneMemberID="viewController">
12+
<layoutGuides>
13+
<viewControllerLayoutGuide type="top" id="7MI-2p-kh4"/>
14+
<viewControllerLayoutGuide type="bottom" id="3GL-jh-lgq"/>
15+
</layoutGuides>
16+
<view key="view" contentMode="scaleToFill" id="G9Q-Uo-ohy">
17+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
18+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
19+
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
20+
</view>
21+
<navigationItem key="navigationItem" title="华捷微信" id="DZY-sl-ly4"/>
22+
</viewController>
23+
<placeholder placeholderIdentifier="IBFirstResponder" id="0je-zi-62X" userLabel="First Responder" sceneMemberID="firstResponder"/>
24+
</objects>
25+
<point key="canvasLocation" x="95" y="42"/>
26+
</scene>
827
<!--Navigation Controller-->
9-
<scene sceneID="cUi-kZ-frf">
28+
<scene sceneID="xFS-tO-89c">
1029
<objects>
11-
<navigationController id="rS3-R9-Ivy" sceneMemberID="viewController">
12-
<navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="yXu-0R-QUA">
30+
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="B4K-zk-qmA" sceneMemberID="viewController">
31+
<toolbarItems/>
32+
<navigationBar key="navigationBar" contentMode="scaleToFill" id="VEY-go-gjw">
33+
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
1334
<autoresizingMask key="autoresizingMask"/>
1435
</navigationBar>
36+
<nil name="viewControllers"/>
1537
<connections>
16-
<segue destination="pGg-6v-bdr" kind="relationship" relationship="rootViewController" id="RxB-wf-QIq"/>
38+
<segue destination="W6F-tC-tHJ" kind="relationship" relationship="rootViewController" id="phh-o8-1JM"/>
1739
</connections>
1840
</navigationController>
19-
<placeholder placeholderIdentifier="IBFirstResponder" id="eq9-QA-ai8" sceneMemberID="firstResponder"/>
20-
</objects>
21-
<point key="canvasLocation" x="-1" y="64"/>
22-
</scene>
23-
<!--Master View Controller - Master-->
24-
<scene sceneID="VgW-fR-Quf">
25-
<objects>
26-
<tableViewController title="Master" id="pGg-6v-bdr" customClass="MasterViewController" sceneMemberID="viewController">
27-
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="mLL-gJ-YKr">
28-
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
29-
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
30-
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
31-
<prototypes>
32-
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="2pz-XF-uhl" style="IBUITableViewCellStyleDefault" id="m0d-ak-lc9">
33-
<rect key="frame" x="0.0" y="86" width="320" height="44"/>
34-
<autoresizingMask key="autoresizingMask"/>
35-
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="m0d-ak-lc9" id="d3P-M7-ByW">
36-
<rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
37-
<autoresizingMask key="autoresizingMask"/>
38-
<subviews>
39-
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2pz-XF-uhl">
40-
<rect key="frame" x="15" y="0.0" width="270" height="43"/>
41-
<autoresizingMask key="autoresizingMask"/>
42-
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
43-
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
44-
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
45-
</label>
46-
</subviews>
47-
</tableViewCellContentView>
48-
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
49-
</tableViewCell>
50-
</prototypes>
51-
<sections/>
52-
<connections>
53-
<outlet property="dataSource" destination="pGg-6v-bdr" id="P41-gY-KXY"/>
54-
<outlet property="delegate" destination="pGg-6v-bdr" id="Y6K-Cp-Qkv"/>
55-
</connections>
56-
</tableView>
57-
<navigationItem key="navigationItem" title="Master" id="tQt-TN-PWz"/>
58-
</tableViewController>
59-
<placeholder placeholderIdentifier="IBFirstResponder" id="6Cn-md-YlS" sceneMemberID="firstResponder"/>
41+
<placeholder placeholderIdentifier="IBFirstResponder" id="Ud4-KE-5oh" userLabel="First Responder" sceneMemberID="firstResponder"/>
6042
</objects>
61-
<point key="canvasLocation" x="473" y="64"/>
43+
<point key="canvasLocation" x="-383" y="42"/>
6244
</scene>
6345
</scenes>
6446
<simulatedMetricsContainer key="defaultSimulatedMetrics">
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// MDKMessage.h
3+
// MessageDisplayKitCoreDataExample
4+
//
5+
// Created by 曾 宪华 on 14-5-30.
6+
// Copyright (c) 2014年 曾宪华 QQ群: (142557668) QQ:543413507 Gmail:xhzengAIB@gmail.com. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import <CoreData/CoreData.h>
11+
12+
13+
@interface MDKMessage : NSManagedObject
14+
15+
@property (nonatomic, retain) NSString * sender;
16+
@property (nonatomic, retain) NSData * photo;
17+
@property (nonatomic, retain) NSDate * timestamp;
18+
@property (nonatomic, retain) NSString * text;
19+
20+
@end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// MDKMessage.m
3+
// MessageDisplayKitCoreDataExample
4+
//
5+
// Created by 曾 宪华 on 14-5-30.
6+
// Copyright (c) 2014年 曾宪华 QQ群: (142557668) QQ:543413507 Gmail:xhzengAIB@gmail.com. All rights reserved.
7+
//
8+
9+
#import "MDKMessage.h"
10+
11+
12+
@implementation MDKMessage
13+
14+
@dynamic sender;
15+
@dynamic photo;
16+
@dynamic timestamp;
17+
@dynamic text;
18+
19+
@end

Example/MessageDisplayKitCoreDataExample/MessageDisplayKitCoreDataExample/MasterViewController.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)