Those pesky little nifty pcf8574 I have i few working on my boards,
after trying a lot of different libery's it was clear just use wire.h
#include <Wire.h>
#define PCF8574_ADDR 0x20 // Hex
Wire.begin();;
Wire.beginTransmission(PCF8574_ADDR); // Address of PCF8574
Wire.write(0xFF); // 0B11111111 aka 255
Wire.endTransmission();
Wire.requestFrom(PCF8574_ADDR, 1);
currentByte = Wire.read();
in arduno.h you can find;
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit))) //sets a bit HIGH
#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) // setes a bit LOW
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
so , uint8_t x bitRead(currentByte,4) will put current state of that bit into x bit values are 0-7