GVKun编程网logo

Swift 编程 UITableviewcontroller 详解(swift uistackview)

5

本文将介绍Swift编程UITableviewcontroller详解的详细情况,特别是关于swiftuistackview的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主

本文将介绍Swift 编程 UITableviewcontroller 详解的详细情况,特别是关于swift uistackview的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于4.9. Utilizing the UITableViewController for Easy、AWESOME SWIFT-swift.libhunt.com-swift类库网站、collectionView 未显示在 UITableViewController 中、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts的知识。

本文目录一览:

Swift 编程 UITableviewcontroller 详解(swift uistackview)

Swift 编程 UITableviewcontroller 详解(swift uistackview)

判断是否为整形:


- (BOOL)isPureInt:(Nsstring *)string{

NSScanner* scan = [NSScanner scannerWithString:string];

int val;

return [scan scanInt:&val] && [scan isAtEnd];

}

判断是否为浮点形:


- (BOOL)isPureFloat:(Nsstring *)string{

NSScanner* scan = [NSScanner scannerWithString:string];

float val;

return [scan scanFloat:&val] && [scan isAtEnd];

}



4.9. Utilizing the UITableViewController for Easy

4.9. Utilizing the UITableViewController for Easy

Problem

    你想要快速的创建表视图

Solution

使用的UITableViewController视图控制器,默认情况下配备了一个表视图控制器


Discussion

    在iOS SDK中包含了一个非常方便的类称为的UITableViewController中收录预定义了里面一个表视图实例。为了利用这个类的优势,你必须要真正做的是创建一个子类的上述类的新类。在这里,我将引导您完成必要的步骤来创建一个新的Xcode项目,利用表视图控制器:


1.在Xcode中从菜单项目选择File->New->Project...


2.在屏幕的左侧边,确保了iOS类别被选中。然后选择应用程序的子类别。在右手边,选择Empty Application,然后按下Next按钮,如图4-19所示


3.在下一屏幕上,只需选择适合您的项目的名称。另外,还要确保一切,除了对本组织名称和公司标识在你的对话框是一样的对视了一眼,我证明给你在图4-20 。一旦你完成后,按[下一步]按钮。


4.在下一屏幕上,你有机会到你的应用程序保存到磁盘。只需保存该应用程序在一个地方,对你有意义,并按下Create按钮


5.在xcode中选择 File -> New -> File…menu


6.在该对话框中,确保IOS是在左手边,而可可触摸就是被选中的子类别的主要类别。然后在对话框的右侧,选择Objective-C类,如图4-21


7.在下一屏幕上,你可以选择你的新类的超类。这个步骤是非常重要的。请确保您设置您的超类的UITableView控制器。另外,还要确保你的设置,其余都是一样。输入完成后,按Next按钮。

8.在下一屏幕上,你得到机会,以节省您的表视图控制器项目。继续将其保存为的ViewController类,然后按下Create按钮


9.在你的应用程序委托的执行文件,记住要导入此视图控制器的头文件,然后创建这个类的一个实例,并将其设置为您的应用程序的根视图控制器,如下所示:


 #import “AppDelegate.h

 #import “ViewController.h


@implementation AppDelegate


- (BOOL)     application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


    ViewController *controller = [[viewController alloc] initWithStyle:UITableViewStylePlain];


    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds];

    

    self.window.rootViewController = controller;

    

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

     return YES;


现在,如果你尝试编译你的项目,你会看到,编译器会为您提供以下警告:


viewController.m:47:2: potentially incomplete method implementation

viewController.m:54:2: Incomplete method implementation


这个警告告诉你,你需要注意看你的视图控制器的实现文件。如果你打开这个文件,你会看到,苹果已经插入#waring宏在表视图控制器类模板,它是造成这些警告将显示在屏幕上。一个警告被放置在numberOfSectionsInTableView内侧:方法,另一种是内部实现代码如下:numberberOfRowsInSection :方法。我们看到这些警告的原因是,我们没有编码这些方法的逻辑。该表的视图控制器必须具有最低限度的信息是部分显示的数目,要显示的行数,以及要显示的每一行的单元对象。你没有看到对于缺乏细胞对象实现的任何警告的原因是,苹果在默认情况下提供了一个虚拟实现这个方法,为您创建一个空单元格

 


         在默认情况下,该表视图控制使数据源和表视图的委托。你不必单独为表视图指定一个委托或数据源。



现在,让我们进入我们的表视图控制器的实现,并确保我们有一个字符串数组(只是作为一个例子) ,我们可以反馈到我们的表视图


#import “ViewController.h

 

static NSString *CellIdentifier = @“Cell”;


@interface ViewController ()

@property (nonatomic, strong) NSArray *allItems;

 @end


@implementation ViewController

- (id)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self){


      //custom initialization

     self.allItems = @[@“Anthony Robbins”,  @“Steven Paul Jobs”,@“Paul Gilbert”,@“Yngwie Malmsteen”];


      [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];


      }

        return self;

}



- (void) viewDidLoad{


     [super viewDidLoad];

}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{


    return 1;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowInSection:(NSInteger)section{


      return self.allItems.count;

}



- (UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath{



      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier  forIndexPath:indexPath];


   cell.textLabel.text = self.allItems[indexPath.row];


   return cell;

}

@end



Now if we run our app, we will see something similar to what is shown in Figure 4-23.


图:4-23. Our strings are properly displayed in the table view

这几乎是所有有知道关于表视图控制器。记住,如前面提到的,你的表视图控制器是你的表视图的委托和数据源了。所以,你可以实现就在你的表视图控制器的实现在UITableViewData源协议的方法以及该UITableViewDelegate协议的方法。




AWESOME SWIFT-swift.libhunt.com-swift类库网站

AWESOME SWIFT-swift.libhunt.com-swift类库网站

https://swift.libhunt.com/categories/688-events

29 Events libraries and projects

  • ORDERED BY POPULARITY
  • ORDER BY DEV ACTIVITY
  •  ReactiveCocoa

      10.0   7.3  Objective-C
    ReactiveCocoa (RAC) is a Cocoa framework inspired by Functional Reactive Programming. It provides APIs for composing and transforming streams of values over time.
  •  RxSwift

      9.9   8.8 L3  Swift
    Microsoft Reactive Extensions (Rx) for Swift and iOS/OSX platform.
  •  PromiseKit

      9.8   8.7 L5  Swift
    async promise programming lib.
  •  ReSwift

      9.6   6.3 L5  Swift
    Unidirectional Data Flow in Swift
  •  Bond

      9.3   8.8 L1  Swift
    a Swift binding framework.
  •  BrightFutures

      8.3   4.7 L4  Swift
    promise and future lib for swift.
  •  Katana

      8.2  8.7 L4  Swift
    Swift apps a la React and Redux.
  •  ReactorKit

      7.8   6.4  Swift
    A framework for reactive and unidirectional application architecture.
  •  ReactKit

      7.4   0.0 L3  Swift
    Swift Reactive Programming.
  •  FutureKit

      6.4  0.7 L2  Swift
    A Swift based Future/Promises Library.
  •  SwiftEventBus

      6.4   3.2 L5  Swift
    A publish/subscribe event bus optimized for iOS.
  •  EmitterKit

      5.7  3.5 L5  Swift
    an implementation of event emitters and listeners in swift.
  •  Signals

      4.9   3.3 L5  Swift
    replaces delegates and notifications.
  •  Safe

      4.9   0.0 L2  Swift
    A modern concurrency and synchronization for Swift.
  •  snail

      4.5   7.1 L5  Swift
    An observables framework for Swift
  •  Reactor

      4.1   2.4 L5  Swift
    Powering your RAC architecture.
  •  VueFlux

      3.8  6.8  Swift
    Unidirectional Data Flow State Management Architecture
  •  SignalKit

      3.7   0.0 L5  Swift
    Swift event and binding framework.
  •  Observable

      3.7   6.2  Swift
    The easiest way to observe values.
  •  When

      3.4   5.4 L5  Swift
    A lightweight implementation of Promises in Swift.
  •  Caravel

      3.3   0.0 L2  Swift
    A Swift event bus for UIWebView and JS.
  •  Future

      2.5   0.0 L4  Swift
    A micro framework providing Future.
  •  NoticeObserveKit

      2.3   0.0 L5  Swift
    NoticeObserveKit is type-safe NotificationCenter wrapper that associates notice type with info type.
  •  Aftermath

      1.8   0.0 L5  Swift
    Stateless message-driven micro-framework in Swift.
  •  Notificationz

      1.6   2.5 L5  Swift
    Helping you own NSNotificationCenter by providing a simple, customizable adapter.
  •  Forbind

      1.2   0.0 L4  Swift
    Functional chaining and Promises in Swift.
  •  ReduxSwift

      1.0   0.0 L5  Swift
    Predictable state container for Swift apps too
  •  PureFutures

      0.7   0.0 L4  Swift
    Futures and Promises library.
  •  SSEventFlow

      0.3  4.4 L5  Swift
    A type safe alternative to NSNotification, inspired by Flux.

collectionView 未显示在 UITableViewController 中

collectionView 未显示在 UITableViewController 中

如何解决collectionView 未显示在 UITableViewController 中?

我想在 UITableViewController 类中显示 UICollectionView。我看过相关的视频和代码,但显然它不再适用于 Swift 5,或者至少我不知道如何在 Swift 5 中进行设置。我以编程方式完成所有工作。这是我在 viewDidLoad() 中调用的函数,但它似乎不起作用:

func configureCollectionView() {
    
    let layout = UICollectionViewFlowLayout()
    layout.scrollDirection = .vertical

    let frame = CGRect(x: 0,y: 0,width: view.frame.width,height: view.frame.height - (tabBarController?.tabBar.frame.height)! - (navigationController?.navigationBar.frame.height)!)

    collectionView = UICollectionView(frame: frame,collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.alwaysBounceVertical = true
    collectionView.backgroundColor = .white
    collectionView.register(SearchCell.self,forCellWithReuseIdentifier: "SearchCell")

    tableView.addSubview(collectionView)
    tableView.separatorColor = .clear

}

我也调用了这些 collectionView 函数:

minimumInteritemSpacingForSectionAt

minimumLinespacingForSectionAt

sizeforItemAt

numberOfItemsInSection

cellForItemAt

didSelectItemAt

我能做些什么来解决我的问题?

解决方法

这样设置 collectionView.backgroundColor = .black,你能看到black的背景吗?

iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>

iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts

如何解决iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>

我不断收到来自随机用户的随机崩溃报告。不幸的是,我无法定期重现这一点。用户说崩溃是在 discussionViewController 中随机发生的。所有崩溃报告都有类似的内容:

0   libswiftCore.dylib              0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1   libswiftCore.dylib              0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2   libswiftCore.dylib              0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3   APPNAME                             0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916

这是完整的崩溃日志和崩溃的线程:

Hardware Model:      iphone11,6
Process:             APPNAME [11770]
Path:                /private/var/containers/Bundle/Application/.../APPNAME.app/APPNAME
Identifier:          ----
Version:             62 (62)
AppStoretools:       12E262
AppVariant:          1:iphone11,6:13
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           ---- [1824]


Date/Time:           2021-06-17 12:07:01.4346 +1000
Launch Time:         2021-06-17 12:06:56.4993 +1000
OS Version:          iPhone OS 14.6 (18F72)
Release Type:        User
Baseband Version:    3.04.01
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x8000000000000010 -> 0x0000000000000010 (possible pointer authentication failure)
VM Region Info: 0x10 is not in any region.  Bytes before following region: 4339515376
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                   102a7c000-102a94000 [   96K] r-x/r-x SM=COW  ...APPNAME.app/APPNAME

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL,Code 0xb
Terminating Process: exc handler [11770]
Triggered by Thread:  3


Thread 3 name:
Thread 3 Crashed:
0   libswiftCore.dylib              0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1   libswiftCore.dylib              0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2   libswiftCore.dylib              0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3   APPNAME                             0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916
4   APPNAME                             0x0000000102ad09d4 thunk for @escaping @callee_guaranteed (@guaranteed Data?,@guaranteed NSURLResponse?,@guaranteed Error?) -> () + 132 (<compiler-generated>:0)
5   CFNetwork                       0x00000001a1b0a3dc __40-[__NSURLSessionLocal taskForClassInfo:]_block_invoke + 540 (LocalSession.mm:687)
6   CFNetwork                       0x00000001a1b1c768 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 244 (LocalSessionTask.mm:584)
7   libdispatch.dylib               0x00000001a10d1a84 _dispatch_call_block_and_release + 32 (init.c:1466)
8   libdispatch.dylib               0x00000001a10d381c _dispatch_client_callout + 20 (object.m:559)
9   libdispatch.dylib               0x00000001a10db004 _dispatch_lane_serial_drain + 620 (inline_internal.h:2557)
10  libdispatch.dylib               0x00000001a10dbc34 _dispatch_lane_invoke + 456 (queue.c:3862)
11  libdispatch.dylib               0x00000001a10e64bc _dispatch_workloop_worker_thread + 764 (queue.c:6589)
12  libsystem_pthread.dylib         0x00000001ed04a7a4 0x1ed047000 + 14244
13  libsystem_pthread.dylib         0x00000001ed05174c 0x1ed047000 + 42828

我已验证 discussionViewController.fetchPostData() 不会强制解开任何可选选项,没有 try! 并且在任何地方都使用 [weak self]self?。该函数非常大,所以我很难缩小崩溃发生的范围。

今天的关于Swift 编程 UITableviewcontroller 详解swift uistackview的分享已经结束,谢谢您的关注,如果想了解更多关于4.9. Utilizing the UITableViewController for Easy、AWESOME SWIFT-swift.libhunt.com-swift类库网站、collectionView 未显示在 UITableViewController 中、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts的相关知识,请在本站进行查询。

本文标签: